正则表达式如何|和?使用多个角色?

时间:2015-01-19 23:32:29

标签: regex c++11

编辑:我正在使用C ++ 11 std :: regex。


我如何知道正则表达式"运算符"适用于单个字符或一堆字符?

示例1:如果我有apple|orange的正则表达式,为什么它不匹配:

applerange
applorange

示例2:如果我有loo?se的正则表达式,那么这意味着之前的字符是可选的吗?为什么不匹配:

se

鉴于这两个例子和我有限的正则表达式技巧,我解决了这两个问题:

  • 在示例1中,要有一个char"或"我会写:appl[eo]range
  • 在示例2中,为了让前3个字符可选,我会写:(?:loo)?se

这些是正确的解决方案,还是有更明显的解决方案?

1 个答案:

答案 0 :(得分:2)

交替运算符|交替进入下一个边界,即模式的开始/结束,括号或其他交替。即。

apple|orange
(apple)|(orange)

的含义相同且匹配"apple""orange"

将管道说明为边界:

apple|orange|pear
(apple)|(orange)|(pear)

含义相同。

可选运算符?适用于前一个术语。没有括号,它是前一个单个字符。即。

loo?se
lo(o)?se

的含义相同,并且匹配"lose""loose"。前面的术语也可以是字符类或括号(分组)术语。