好的,我已经和RegEx 合作了很多次,但这是我老老实实无法理解的事情之一。而且看起来我错过了一些相当简单的东西......
所以,假设我们要匹配“AB”或“AC”。换句话说,“A”后跟“B”或“C”。
这可以表示为A[BC]
或或A[B|C]
A(B|C)
等等。
现在,如果A,B,C不只是单个字母而是子表达式呢?
请在这里看一下这个例子(好吧,我承认它看起来不那么简单!哈哈):http://regexr.com?382a4
我正在尝试匹配capital =
(及其变体),然后是:
为什么使用|
运算符仅适用于后一部分(我的正则表达式也匹配“模式2”而前面有capital =
)。请注意,我也试过使用正面的环顾,但没有任何成功。
有什么想法吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
我想这个正则表达式:
capital = (ABC|XYZ)
应该有用(如果我能正确理解你的请求......)
答案 2 :(得分:0)
实际上[B|C]
不正确,(B|C)
是正确的。
在RegEx中,术语[]
被称为字符类,它用于根据括号中列出的选项表示一个(单个)字符。
在您的情况下,[B|C]
与B
或|
或C
匹配。我们可以使用[BC]
匹配B
或C
来更正此问题。这恰好与B
或C
中的一个字符匹配。
在RegEx术语中,()
被称为捕获组。它用于在相邻组之间创建边界,它匹配的任何内容都将出现在preg_match的输出数组中或作为preg_replace中的变量。
在该组中,您可以使用|
运算符来指定您希望匹配之前的任何内容或运算符之后的任何内容。
这可用于匹配具有多个字符的字符串,例如(Ana|Maria)
或各种结构,例如([a-zA-Z]+|[0-9]+)
。
您还可以使用|
等捕获组之外的(group-1)|(group-2)
,也可以使用((group-1)|(group-2))
等子组。