正则表达式匹配比我更讨价还价
我有这样的正则表达式:CMD?(S?[1-8][0-1]|R?[1-8]|[qQ])
正则表达式匹配比我更讨价还价
应该符合这些情况:
所有情况下应以“CMD”
其次是要么开始:
- 'S'依次为
- [1-8]其次为
- [0-1]
- 'R' 随后
- [1-8]
- 'Q' 或 'Q'
但我觉得也匹配CMD[1-8][1-0]
我无法弄清楚我做错了什么。
最后,我该怎么做才能得到一个正则表达式匹配所有除了这些情况下,因为我无法找到一个解决方案否定声明。
回答:
您似乎混淆了?
的含义,其实际上意味着“前面的字符为0或1”。这就是为什么你会得到没有S
的比赛。
你正在寻找的正则表达式是:
CMD(S[1-8][01]|R[1-8]|[qQ])
编辑:
对不起,我错过了你的问题的后半部分。
这取决于你使用的是什么实现。例如,在Perl中,它就像编写!~
而不是=~
一样简单。否则,你可以使用所谓的“负向超前断言”。假设你仍然希望否定序列以CMD
开头:
CMD(?!S[1-8][01]|R[1-8]|[qQ])
以上是 正则表达式匹配比我更讨价还价 的全部内容, 来源链接: utcz.com/qa/261822.html