在Python中, (?P<group_name>…) 语法允许通过名称引用匹配的string: >>> import re >>> match = re.search('(?P<name>.*) (?P<phone>.*)', 'John 123456') >>> match.group('name') 'John' “P”代表什么? 我在官方文档中找不到任何提示。 我很想知道如何帮助我的学生记住这个语法。 知道“P”代表什么(或可能代表)是有用的。
我有以下模板string: "Hello [Name] Please find attached [Invoice Number] which is due on [Due Date]" 。 我也有stringvariables名称,发票号码和截止date – 什么是最好的方式来replace模板中的variables与variables? (请注意,如果一个variables碰巧包含一个令牌,它不应该被replace)。 编辑 感谢@laginimaineb和@ alan-moore, 这里是我的解决scheme: public static String replaceTokens(String text, Map<String, String> replacements) { Pattern pattern = Pattern.compile("\\[(.+?)\\]"); Matcher matcher = pattern.matcher(text); StringBuffer buffer = new StringBuffer(); while (matcher.find()) { String replacement = replacements.get(matcher.group(1)); if (replacement != […]
我重构了旧的代码,遇到了几个IF条件太复杂和冗长,我确定它们可以被简化。 我的猜测是,由于后来的修改,这些条件增长很多。 无论如何,我想知道你们中有没有人知道我可以使用的在线简化程序。 我对任何特定的语言都不感兴趣,只是一个简单的例子: ((A或B)和(B和C)或C) 给我一个expression式的简化版本,如果有的话。 我已经看了其他类似的问题,但没有一个指向我一个很好的简化器。 谢谢。
我正在使用egrep -R然后是包含约10个联合的正则expression式,如下所示: .jpg | .png | .gif .jpg | .png | .gif .jpg | .png | .gif等。这工作得很好,现在我想用.bmpreplace所有find的string 我正在想着类似的东西 egrep -lR "\.jpg|\.png|\.gif" . | sed "s/some_expression/.jpg/" file_it_came_form 所以这里的问题是我如何在sed做类似的联合正则expression式,以及如何告诉它保存对获得input的文件的更改。
可能重复: 什么是最终的邮政编码和正则expression式? 我需要正则expression式,可以满足我的三个条件的邮政编码。 例如- 12345 12345-6789 12345 1234 任何指针和build议将不胜感激。 谢谢 !
我需要像“/ [\ w \ s] + /”string转换为正则expression式。 "/[\w\s]+/" => /[\w\s]+/ 我尝试使用不同的Regexp方法,如: Regexp.new("/[\w\s]+/") => /\/[w ]+\// ,类似于Regexp.compile和Regexp.escape 。 但是他们没有一个像我期望的那样回报。 进一步,我尝试删除反斜杠: Regexp.new("[\w\s]+") => /[w ]+/但没有运气。 然后,我试图做到这一点: str = "[\w\s]+" => "[w ]+" 它逃脱了。 现在,string如何保持原样并转换为正则expression式对象?
Pattern.compile()方法的重要性是什么? 为什么在获取Matcher对象之前需要编译正则expression式string? 例如 : String regex = "((\\S+)\\s*some\\s*"; Pattern pattern = Pattern.compile(regex); // why do I need to compile Matcher matcher = pattern.matcher(text);
我想了解这个代码块。 第一个,我们在expression什么? 我的理解是任何字符(0或更多*),后面跟着0到9之间的任何数字(一个或多个+),后面是任何字符(0或更多次*)。 当这个被执行时,结果是: Found value: This order was placed for QT3000! OK? Found value: This order was placed for QT300 Found value: 0 有人可以和我一起经历这个吗? 使用捕获组有什么优势? import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexTut3 { public static void main(String args[]) { String line = "This order was placed for QT3000! OK?"; String pattern = "(.*)(\\d+)(.*)"; // […]
我想search并replace这个 `https://example.com/`{.uri} 至 [https://example.com/](https://example.com/) 用vim我会做一个s/ {.uri}/[\1](\1)/g但是这对atom.io 。 我该如何解决这个问题?
我试图从string中删除一切,但只是数字(0-9)。 我认为这会工作.. echo preg_replace("[^0-9]","",'604-619-5135'); 但它回声“604-619-5135”。 我错过了什么?