【发布时间】:2014-08-13 08:56:06
【问题描述】:
我的文本包含已知模式中的短语,例如:#%some phrase%#,该短语可以是任何东西(显然它不会包含模式 '%#')。
现在,我想构建一个正则表达式(在 php 中),它将匹配 2 个或更多短语的序列(它们之间有或没有空格),所以如果,例如,我的文本是:
#%jjj jjj%# kkjjkkjj kkjjkkjj #%kkk kkk%# #%ttt mmm%#
我希望正则表达式匹配:
#%kkk kkk%# #%ttt mmm%#
我试过这个正则表达式:/(?:#%.+?(?!%#).%#\s*){2,}/
但由于某种奇怪的原因,它匹配整个字符串,并忽略了否定的前瞻。
此外,我的完整任务是匹配一系列短语,它们之间最多包含 1 个字符(除了空格)。
如何实现?
测试用例:
文字:
#%Prime target%# #%Online stuff%# English Deutsch Norsk Svenska Suomi English AU English CA #%Home%# #%About Us%# #%Fair Play%# #%Promotions%#
应该匹配:
- #%Prime target%# #%在线内容%#
- #%Home%# #%About Us%# #%Fair Play%# #%Promotions%#
文字:
#%Prime target%# 英语 Deutsch Norsk Svenska Suomi 英语 AU 英语 CA #%Home%# | #%关于我们%# | #%公平竞争%# | #%促销%#
应该匹配:
- #%首页%# | #%关于我们%# | #%公平竞争%# | #%促销%#
【问题讨论】:
-
我写道“我的完整任务是匹配一系列短语,它们之间最多包含 1 个字符(除了空格)。”
-
我根据您的测试输入更新了我的答案,看看是否有帮助