正则表达式环顾四周并匹配 IF

regex lookaround and match IF

关于 if-else 类型的情况,我有点想弄清楚如何让环顾四周为我工作。当我尝试在 this site 上实现 if-else 习惯用法时,我最终遇到错误。这是我拥有的:

MCV(1|0)(\d)(?<!1)[0-6]|[0-9]

这是我要匹配的示例

这些

MVC123 MVC034 MVC001 MVC196

不是这些

MCV197 MCV000 MCV876

从而匹配出现MCV且数字分量范围为1-196

的地方

这是你的正则表达式分解:

MCV(1|0)(\d)(?<!1)[0-6]|[0-9]
  1. MCV - 按字面意思匹配 MCV
  2. (1|0) - 匹配 10
  3. (\d) - 匹配一个数字
  4. (?<!1) - 确保最后一位数字不是 1
  5. </code> - 完全匹配第一组匹配的内容(也就是如果 <code>(1|0) 匹配 1 - 匹配 1,否则 - 0
  6. [0-6] - 匹配从 06
  7. 的数字
  8. |[0-9] - 或者,匹配以上所有 只是从 09
  9. 的数字

至于什么是真正的解决方案:

MVC(00[1-9]|0[1-9]\d|1[0-8]\d|19[0-6])

1-196部分:

  1. 00[1-9] - 如果我们从 00 开始,第三个数字不应该是 0,也就是 1 到 9
  2. 0[1-9]\d - 如果我们从 0 和第二个数字开始,这不是 0 那么任何数字都可以作为第三个位置,也就是 10 到 99
  3. 1[0-8]\d - 如果我们以 1 和第二个数字开始,而不是 9 那么任何数字都可以作为第三个位置,也就是 100到 189
  4. 19[0-6] - 如果我们从 19 开始,那么第三个位置只能接受从 06 的数字,也就是 190 到 196

您可以使用这个正则表达式:

\bMVC(0*[1-9][0-9]?|1[0-8][0-9]|19[0-6])\b

RegEx Demo