【发布时间】:2011-07-11 00:42:46
【问题描述】:
我有如下字符串,例如:
aaXXccYYeeXX_ZZkkYYmmXX_ZZnnXXooYYuuXX_ZZvv
如何找到字符串中的所有XX.*YY.*ZZ 部分? (可能使用preg_match())
- XX cc YY eeXX_ ZZ
- XX _ZZkk YY mmXX_ ZZ
- XX _ZZnnXXoo YY uuXX_ ZZ
- XX oo YY uuXX_ ZZ
加上所有更长的匹配,如:
- XX cc YY eeXX_ZZkkYYmmXX_ZZnnXXooYYuuXX_ ZZ
【问题讨论】:
-
我之前也遇到过同样的问题。问题是试图找到重叠的,既不是贪婪的也不是非贪婪的工作。不过我不是正则表达式专家。
-
尝试使用RegexBuddy open source alternatives 来设计匹配模式。
-
这类似于这个问题:stackoverflow.com/questions/5163933/#5164444,但那是使用 .Net,而不是 PCRE。
-
我会说我在另一个问题中所说的 - 如果模式很简单,或者开始/中间/结束模式不相关(即,
.*在它们之间,没有返回参考),您可以通过搜索所有XX、所有YY和所有ZZ来独立找到它们,并计算出所有组合。