我需要一些正则表达式帮助。
我有一个这样的清单:
/hours_3203
/hours_3204
/hours_3205
/hours_3206
/hours_3207
/hours_3208
/hours_3309
/hours_3310
/hours_3211
我正在使用此正则表达式查找以32或33开头的所有条目:
/hours_3[23]/
这是有效的。
但是当我被告知需要排除 hours_3211
来匹配此列表时,我被抛出一个曲线球。
如何调整我的正则表达式以匹配所有hours_3[23]
但不匹配/hours_3211
?
或者,当我有这样的列表时:
/hours_3412
/hours_3413
/hours_3414
/hours_3415
/hours_3516
/hours_3517
/hours_3518
/hours_3519
我一直在使用正则表达式:
/hours_3[45]/
找到所有hours_34x
和/hours_35x
我如何调整:
/hours_3[45]/
在/hours_3211?
找到上述但也查找/匹配?
答案 0 :(得分:4)
如何调整我的正则表达式以匹配所有
hours_3[23]
但不匹配hours_3211
?
您可以使用插入负前瞻子模式:
/hours_3(?!211)[23]/
(?!211)
在211
因此禁止hours_3
hours_3211
为负面预测
答案 1 :(得分:1)
我假设您在第二个正则表达式中添加了3211,就像这样....
hours_(3[45]|3211)
第一个是否定前瞻
hours_3[23](?!11)
答案 2 :(得分:1)
如何调整我的正则表达式以匹配所有
hours_3211
但不匹配(?!)
?
使用否定前瞻/hours_3(?!211)[23]/
:
/hours_3[45]/
我如何调整
/hours_3211
以找到上述内容,但又在|
找到/匹配?
使用交替/hours_3(?:[45]|211)/
:
.*
修改强>
更合适的是,以上仅指定它是否匹配。如果您想要返回实际的完整匹配,您希望将/hours_3(?!211)[23].*/
/hours_3(?:[45]|211).*/
添加到RegExp的末尾,如下所示:
CheckActivity check = new CheckActivity();