我有一个正则表达式:CMD?(S?[1-8][0-1]|R?[1-8]|[qQ])
它应与这些案件相匹配:
所有病例应以"CMD“开头。
其次是:
但我发现它也符合CMD[1-8][1-0]
,我不知道我做错了什么。
最后,我该怎么做才能得到除这些情况之外的所有正则表达式,因为我找不到否定这个说法的解决方案。
发布于 2012-10-01 12:52:14
您似乎混淆了?
的含义,它实际上意味着“前面字符的0或1”。这就是为什么你在没有S
的情况下得到比赛的原因。
你要找的是:
CMD(S[1-8][01]|R[1-8]|[qQ])
编辑:
对不起,我错过了你问题的后半部分。
这取决于您使用的是什么实现。例如,在Perl中,编写!~
而不是=~
一样容易。否则,您可以使用所谓的“负前瞻性断言”。假设您仍然希望否定的系列以CMD
开头
CMD(?!S[1-8][01]|R[1-8]|[qQ])
https://stackoverflow.com/questions/12673593
复制相似问题