1

&{2}可以匹配双'&&'字符(换句话说 - 一个AND运算符),一切都如我所料。但是,[&{2}|\|{2}]将匹配单个 '&' 或 '|' 字符。我该怎么办?为什么会发生这种情况?

4

3 回答 3

4

[]是一个字符组,即“该组中的任何字符”。特殊字符在其中没有任何或不同的含义。使用常规组:

(&{2}|\|{2})

如果您希望它不捕获:

(?:&{2}|\|{2})
于 2012-08-01T10:40:24.697 回答
1

你有没有尝试过

/([&|])\1/

()   - capture
[&|] - character class which matches a single & or |
\1   - and match what has been captured  

匹配和加倍 & 或 |

于 2012-08-01T10:43:03.417 回答
0

[]在这种情况下不要使用。

&{2}|\|{2}

使用示例:

$ perl -ne 'print if /&{2}|\|{2}/' <<EOF
> &&
> ||
> |
> EOF
&&
||

正如你所看到的&&||匹配和|不匹配。

于 2012-08-01T10:37:56.223 回答