我写了以下正则表达式:
(^(?=.*?\bran\b)(?=.*?\bfast\b)[^,]*)
我的目标是,当直到第一个逗号的文本同时包含ran和fast时,它是否与目标字符串匹配。
目标字符串:
我正在使用pcre(php)
我遇到的问题是当前编写的正则表达式正在查看整个文本字符串,以查看是否存在两个单词(运行和快速)。我想将文本限制为第一个逗号之前的文本,但不知道如何实现。
答案 0 :(得分:2)
您只需要用.
替换[^,]
实例,因为.*?
将包含逗号,因此匹配之后出现的所有“随机”或“快速” 逗号。在这里:
(^(?=[^,]*?\bran\b)(?=[^,]*?\bfast\b)[^,]*)
请注意,[^,]
也将与换行符匹配,因此,如果这不是您想要的,则可以考虑使用类似[^,\n]
或[^,\r\n]
的东西。
此外,请注意,即使没有逗号,您的正则表达式也将匹配。如果您想确保匹配后跟一个逗号,则可能需要在末尾添加另一个肯定的Lookahead(即(?=,)
)。