正则表达式环顾四周并匹配 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]
MCV
- 按字面意思匹配 MCV
(1|0)
- 匹配 1
或 0
(\d)
- 匹配一个数字
(?<!1)
- 确保最后一位数字不是 1
</code> - 完全匹配第一组匹配的内容(也就是如果 <code>(1|0)
匹配 1
- 匹配 1
,否则 - 0
)
[0-6]
- 匹配从 0
到 6
的数字
|[0-9]
- 或者,匹配以上所有 或 只是从 0
到 9
的数字
至于什么是真正的解决方案:
MVC(00[1-9]|0[1-9]\d|1[0-8]\d|19[0-6])
1-196部分:
00[1-9]
- 如果我们从 00
开始,第三个数字不应该是 0
,也就是 1 到 9
0[1-9]\d
- 如果我们从 0
和第二个数字开始,这不是 0
那么任何数字都可以作为第三个位置,也就是 10 到 99
1[0-8]\d
- 如果我们以 1
和第二个数字开始,而不是 9
那么任何数字都可以作为第三个位置,也就是 100到 189
19[0-6]
- 如果我们从 19
开始,那么第三个位置只能接受从 0
到 6
的数字,也就是 190 到 196
您可以使用这个正则表达式:
\bMVC(0*[1-9][0-9]?|1[0-8][0-9]|19[0-6])\b
关于 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]
MCV
- 按字面意思匹配 MCV(1|0)
- 匹配1
或0
(\d)
- 匹配一个数字(?<!1)
- 确保最后一位数字不是1
</code> - 完全匹配第一组匹配的内容(也就是如果 <code>(1|0)
匹配1
- 匹配1
,否则 -0
)[0-6]
- 匹配从0
到6
的数字
|[0-9]
- 或者,匹配以上所有 或 只是从0
到9
的数字
至于什么是真正的解决方案:
MVC(00[1-9]|0[1-9]\d|1[0-8]\d|19[0-6])
1-196部分:
00[1-9]
- 如果我们从00
开始,第三个数字不应该是0
,也就是 1 到 90[1-9]\d
- 如果我们从0
和第二个数字开始,这不是0
那么任何数字都可以作为第三个位置,也就是 10 到 991[0-8]\d
- 如果我们以1
和第二个数字开始,而不是9
那么任何数字都可以作为第三个位置,也就是 100到 18919[0-6]
- 如果我们从19
开始,那么第三个位置只能接受从0
到6
的数字,也就是 190 到 196
您可以使用这个正则表达式:
\bMVC(0*[1-9][0-9]?|1[0-8][0-9]|19[0-6])\b