我该如何写:字符串必须包含子字符串“A”,但不能使用正则表达式包含“B”或“C”

时间:2018-05-05 00:07:31

标签: regex substring

使用正则表达式,我需要测试字符串是否包含A.但字符串不能包含B或C.

什么是REGEX语法?

4 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式:

\b[^\sCB]*A[^\sCB]*\b

将匹配包含A但未包含CB的任何字词

匹配bar但不包含carfoo的字词的正则表达式是:

\b(?!\S*(car|foo))\S*bar(?!\S*(car|foo))\S*\b

答案 1 :(得分:0)

实际上......以下方法并不太糟糕:

^(?!.*are)(?!.*how).*(hello)

如果您不想要arehow,但想要hello。围绕hello的parens是可选的,并且“捕获”你想要的位而不是整个字符串。

https://regex101.com/r/FiO9QD/2

答案 2 :(得分:0)

试试这个:

^(?!.*[BC]).*A.*

我认为这是最小的正则表达式。

答案 3 :(得分:0)

如果你想检查整个字符串是否包含A而不是B或C,你可以使用否定的character class来匹配B,C或换行符。

^[^BC\n]*A[^BC\n]*$

<强>详情

  • ^在行首处断言位置
  • [^BC\n]*匹配零次或多次而非BC或换行符
  • A按字面意思匹配
  • [^BC\n]*匹配零次或多次而非BC或换行符
  • $断言行尾的位置