正则表达式 - 匹配优先级

2019-04-28 07:20|来源: 网路

正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。

相同优先级的从左到右进行运算,不同优先级的运算先高后低。下表从最高到最低说明了各种正则表达式运算符的优先级顺序:

运算符 描述
\ 转义符
(), (?:), (?=), [] 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, \任何元字符、任何字符 定位点和序列(即:位置和顺序)
| 替换,"或"操作
字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。


相关问答

更多
  • 正则表达式语法 一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 这里有一些可能会遇到的正则表达式示例: JScriptVBScript匹配 /^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。 /\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID 号码是否由一个2位数字,一个连字符以及一个5位数字组成。 /<(.*)> ...
  • 正则表达式语法 一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 这里有一些可能会遇到的正则表达式示例: JScriptVBScript匹配 /^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。 /\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID 号码是否由一个2位数字,一个连字符以及一个5位数字组成。 /<(. ...
  • 网址正则表达式[2022-01-17]

    正则式用xxx.{1,}\d(?=\/) 替换用ssss 你可以搜索Regex Tester – RegexPal,这个网站可以测试正则式是否正确。 不过网站上不能替换。 你有替换的软件么?没有的话推荐RegexBuddy或者同公司的EditPad Pro。
  • 可以用vba完成,按住alt依次按f11,i,m 粘贴代码后按f5即可在c列得到结果 Sub Test() atr = Range("a65536").End(xlUp).Row btr = Range("b65536").End(xlUp).Row a = Range("a1:a" & atr).Value b = Range("b1:b" & btr).Value ReDim c(1 To atr, 1 To 1) Set reg = CreateObject("vbscript.regexp") Wi ...
  • 嗯,.*匹配除了回车换行外的任何字符串
  • 小括号有俩作用,一是改变运算优先级,二是设置成组以便\1、\2后向引用。 fish不是分隔符,就是最普通的直接匹配。你这段代码的意思就是用正则式(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)来匹配1 fish 2 fish red fish blue fish。一一对应都可以看出\\d+匹配数字,\\w+匹配像red blue一样的单词。分隔符和标记不是正则表达式里的概念,所以更谈不上连用不连用的问题。不知道你是从哪里看到的? 有问题请补充
  • /\d{4}-\[01]\d-[0123]\d\s{1,2}[012]\d:[0-6]\d/ 这是精确匹配 其实真正使用时不用这么精确。可以用: /\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}/
  • System.out.println(s.matches("[12]"));
  • 你应该能够用“ 懒惰 ”来实现这个目标(与默认的“贪婪”相比) ? 。 尝试这个: Regex regex = new Regex(@"(?a?)(?a?)(?b??)(?b?)"); You should be able to achieve this with a "lazy" (compared to the default "greedy") ?. Try this: Regex regex = new Regex(@"(?a?)(?a?)(?
  • 鉴于Oracle doc : 表4-2列出了支持在传递给SQL正则表达式函数和条件的正则表达式中使用的元字符列表。 这些元字符符合POSIX标准; “描述”列中记录了与标准行为的任何差异。 并看看| 该表中的值: 表达式a | b匹配字符a或字符b。 再看看POSIX doc : 运算符优先级运算符的优先顺序如下: 与排序相关的括号符号[==] [::] [..] 逃脱的人物\ 字符集(括号表达式)[] 分组() 单字符ERE重复* +? {M,N} 级联 锚定^ $ 交替| 我会说H|ha+与(?:H|h ...