我有一种情况,我可能会得到一对或两个角色,我想要匹配。
例如:
str = 'cddd a dfsdf b sdfg ab uyeroi'
我想匹配任何“a”或“b”或“ab”。如果“ab”聚集在一起,我想把它作为单个匹配(而不是两个匹配“a”“b”)。如果我得到“ab”,总是按顺序排列(“a”将始终位于“b”之前)
我拥有的是:
/[ab]|ab/
但我不确定ab
是否会比[ab]
更强大的匹配词。
感谢您的帮助。
答案 0 :(得分:6)
您当前的表达式不会在大多数常用的正则表达式引擎中执行您想要的操作 - 它将匹配a
或b
。行为取决于implementation of the regex engine:
您可以轻松找出您打算使用的正则表达式风格是否具有文本定向或正则表达式引导。如果可以使用反向引用和/或延迟量词,则可以确定引擎是正则引导的。您可以将正则表达式
regex|regex not
应用于字符串regex not
来进行测试。如果结果匹配仅为regex
,则引擎正则表达式。如果结果为regex not
,则文字导向。这背后的原因是正则表达式引擎是“急切的”。
如果您正在使用正则表达式定向引擎然后修复它,您可以颠倒交替中术语的顺序,以确保它首先尝试匹配ab
:
/ab|[ab]/
或者您可以重写表达式,以便顺序无关紧要:
/ab?|b/
答案 1 :(得分:0)
这有效:
((ab)|a|b)
或更好
(ab|[ab])
答案 2 :(得分:0)
你有a,b和ab的实例作为单词。你只需要整个单词找到它们吗?如果是这样,你应该尝试
/ \ BAB \ C | \ B [AB] \ B /