如何解决正则表达式:优先考虑匹配的长度,而不是关键字顺序
有没有一种方法可以根据匹配的长度而不是正则表达式中列出关键字的顺序来指示RegEx匹配字符串?
说我有这句话:
word1 word2 word3
如果我运行RegEx (word1|word1 word2|word1 word2 word3)
,它将匹配word1
。这是因为word1
是正则表达式中列出的第一个关键字。
如果我运行RegEx (word1 word2 word3|word1 word2|word1)
,那么它将与word1 word2 word3
相匹配(出于相同的原因)。
我需要做的是运行第一个RegEx,但是得到第二个的结果。
因此,基本上我需要指示正则表达式忽略关键字顺序,并优先排列匹配的单词数(实际上是匹配的长度)。因此RegEx (word1|word1 word2|word1 word2 word3)
不应匹配word1
,因为它是列出的第一个,而word1 word2 word3
是因为它是最长的匹配项。
可以吗?
解决方法
据我了解,您要确保单词1存在,然后检查并捕获word2,然后检查并捕获word3。
如果正确,则可以使用/word1(\sword2(\sword3)?)?/
demo here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。