Questions tagged «regex»

正则表达式提供了一种声明性语言来匹配字符串中的模式。它们通常用于字符串验证,解析和转换。由于正则表达式尚未完全标准化,因此带有此标签的所有问题还应包括一个标签,用于指定适用的编程语言或工具。注意:询问HTML,JSON等正则表达式往往会产生负面反应。如果有解析器,请改用它。

8
正则表达式以匹配Java中的URL
在使用正则表达式时,我使用RegexBuddy。我从其库中复制了正则表达式以匹配URL。我在RegexBuddy中成功测试。但是,当我将其复制为JavaString样式并将其粘贴到Java代码中时,它将无法正常工作。以下类打印false: public class RegexFoo { public static void main(String[] args) { String regex = "\\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]"; String text = "http://google.com"; System.out.println(IsMatch(text,regex)); } private static boolean IsMatch(String s, String pattern) { try { Pattern patt = Pattern.compile(pattern); Matcher matcher = patt.matcher(s); return matcher.matches(); } catch (RuntimeException e) { return false; } } …
86 java  regex  regexbuddy 

3
Bash if语句中的正则表达式匹配
我在这里做错了什么? 尝试匹配任何包含空格,小写字母,大写字母或数字的字符串。特殊字符也将很好,但是我认为这需要转义某些字符。 TEST="THIS is a TEST title with some numbers 12345 and special char *&^%$#" if [[ "$TEST" =~ [^a-zA-Z0-9\ ] ]]; then BLAH; fi 显然,这仅测试上,下,数字和空格。虽然不起作用。 *更新* 我想我应该更具体一些。这是实际的实际代码行。 if [[ "$TITLE" =~ [^a-zA-Z0-9\ ] ]]; then RETURN="FAIL" && ERROR="ERROR: Title can only contain upper and lowercase letters, numbers, and spaces!"; …

30
如何使用多个RE引擎测试正则表达式?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 如何针对不同的正则表达式引擎测试同一个正则表达式?
85 regex  testing 

1
WebWorker计算慢速正则表达式匹配的速度明显慢(3x)-仅适用于Firefox
首先,我只是为自己创建了一个正则表达式,该表达式将匹配项目中所有头文件列表中的所有唯一外部库路径。我一周前问过一个关于制作该正则表达式的问题。 我开始四处看看,以了解异步和变成Web worker时的行为。为了方便和可靠,我创建了在所有三种模式下运行的通用文件: /** Will call result() callback with every match it founds. Asynchronous unless called * with interval = -1. * Javadoc style comment for Arnold Rimmer and other Java programmers: * * @param regex regular expression to match in string * @param string guess what * @param result …

2
处理后向引用以re.sub替换模式捕获组
我想取字符串0.71331, 52.25378并返回0.71331,52.25378-即只寻找一个数字,一个逗号,一个空格和一个数字,然后去掉空格。 这是我当前的代码: coords = '0.71331, 52.25378' coord_re = re.sub("(\d), (\d)", "\1,\2", coords) print coord_re 但这给了我0.7133,2.25378。我究竟做错了什么?
85 python  regex 

21
用于版本号解析的正则表达式
我有以下形式的版本号: version.release.modification 其中版本,发行和修改是一组数字或“ *”通配符。此外,任何这些数字(和任何前面的。)可能会丢失。 因此,以下内容有效并解析为: 1.23.456 = version 1, release 23, modification 456 1.23 = version 1, release 23, any modification 1.23.* = version 1, release 23, any modification 1.* = version 1, any release, any modification 1 = version 1, any release, any modification * = any version, any …
84 regex  versioning 

4
如何在Go中执行不区分大小写的正则表达式?
现在,当然,我可以编写正则表达式来处理这两种情况,例如regexp.Compile("[a-zA-Z]"),但是我的正则表达式是由用户提供的字符串构造的: reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \\._-]", -1)) s.Name名字在哪里。可能类似于“西北偏北”。现在,对我来说,最明显的解决方案是遍历每个字符,s.Name并为每个字母写“ [nN]”: for i := 0; i < len(s.Name); i++ { if s.Name[i] == " " { fmt.Fprintf(str, "%s[ \\._-]", str); } else { fmt.Fprintf(str, "%s[%s%s]", str, strings.ToLower(s.Name[i]), strings.ToUpper(s.Name[i])) } } 但是我觉得这是一个不太优雅的解决方案。速度并不是真正的问题,但是我需要知道是否还有另一种方法。
84 regex  go 

4
匹配模式或为空字符串的正则表达式
我有以下与电子邮件地址格式匹配的正则表达式: ^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$ 这用于使用JavaScript进行表单验证。但是,这是一个可选字段。因此,如何更改此正则表达式以匹配电子邮件地址格式或空字符串? 根据我对正则表达式的有限了解,我认为\b匹配一个空字符串,并|表示“ Or”,因此我尝试执行以下操作,但此方法无效: ^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$|\b

4
嵌套捕获组在正则表达式中如何编号?
对于正则表达式应如何处理嵌套括号的捕获行为,是否存在已定义的行为?更具体地说,您是否可以合理地期望不同的引擎将在第一个位置捕获外部括号,并在随后的位置捕获嵌套的括号? 考虑以下PHP代码(使用PCRE正则表达式) <?php $test_string = 'I want to test sub patterns'; preg_match('{(I (want) (to) test) sub (patterns)}', $test_string, $matches); print_r($matches); ?> Array ( [0] => I want to test sub patterns //entire pattern [1] => I want to test //entire outer parenthesis [2] => want //first inner [3] => to …

5
获得正则表达式匹配后的文本
我是使用Regex的新手,我已经看过许多教程,但没有找到适合我想要做的事情的教程, 我想搜索某些内容,但返回其后的所有内容,而不是搜索字符串本身 例如“一些很棒的la脚的句子” 搜索“句子” 返回“真棒” 任何帮助将非常感激 到目前为止,这是我的正则表达式 sentence(.*) 但它返回:很棒的句子 Pattern pattern = Pattern.compile("sentence(.*)"); Matcher matcher = pattern.matcher("some lame sentence that is awesome"); boolean found = false; while (matcher.find()) { System.out.println("I found the text: " + matcher.group().toString()); found = true; } if (!found) { System.out.println("I didn't find the text"); }
84 java  regex 

2
如何在bash脚本中使用正则表达式?
我想使用正则表达式检查变量是否具有有效年份。阅读bash手册,我知道我可以使用运算符=〜 看下面的示例,我希望看到“不正确”,但我看到“确定”。我究竟做错了什么? i="test" if [ $i=~"200[78]" ] then echo "OK" else echo "not OK" fi


1
“现代”正则表达式的识别能力
真正的现代正则表达式实际上可以识别哪种语言? 每当有一个带有后向引用(例如(.*)_\1)的无限长度捕获组时,正则表达式现在就会与非常规语言匹配。但是,仅凭它本身还不足以匹配类似的东西S ::= '(' S ')' | ε-匹配配对对的上下文无关语言。 递归正则表达式(对我来说是新的,但我确信Perl和PCRE中存在)可以识别至少大多数CFL。 有没有人做过或读过这方面的研究?这些“现代”正则表达式的局限性是什么?他们对LL或LR语法的认识比CFG严格多还是少?还是存在两种可以被正则表达式识别但CFG不能识别的语言,而相反呢? 与相关论文的链接将不胜感激。

2
Python和带Unicode的正则表达式
我需要从字符串“ بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ”中删除一些Unicode符号 我知道他们肯定在这里。我试过了: re.sub('([\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+)', '', 'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ') 但这不起作用。字符串保持不变。我究竟做错了什么?

2
包含一个单词或另一个单词的正则表达式
我需要创建一个匹配整数的表达式,后跟“秒”或“分钟” 我试过这个表达式: ([0-9]+)\s+(\bseconds\b)|(\bminutes\b) 它可以工作几秒钟,但不能工作几分钟。 例如,“ 5秒”给出5;秒;而“ 5分钟”给出了;分钟
83 regex  preg-match 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.