正则表达式如何和 ?使用多个字符?

how does regex | and ? work with multiple characters?

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


我如何知道正则表达式 "operator" 适用于单个字符还是一堆字符?

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

applerange
applorange

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

se

鉴于这 2 个示例和我有限的正则表达式技能,我解决了这 2 个问题,如下所示:

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

交替运算符 | 交替到下一个边界,它是模式的 start/end、封闭括号或另一个交替。即

apple|orange
(apple)|(orange)

含义相同,匹配 "apple""orange"

以管道为边界进行说明:

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

意思相同

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

loo?se
lo(o)?se

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