正则表达式匹配比我更讨价还价

我有这样的正则表达式CMD?(S?[1-8][0-1]|R?[1-8]|[qQ])正则表达式匹配比我更讨价还价

应该符合这些情况:

所有情况下应以“CMD”

其次是要么开始:

  1. 'S'依次为

    1. [1-8]其次为
    2. [0-1]
  2. 'R' 随后

    1. [1-8]
  3. '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

回到顶部