日期:2014-05-20  浏览次数:20955 次

正则表达式如何表示要匹配无顺序字符呢?
正则表达式如何表示要匹配无顺序字符呢?

想要用规则: 匹配有chi 、peo、rep字符的字符串

来匹配字符串 china people republic 、people republic china、 republic people china等字符串

如何做呢?

------解决方案--------------------
呵呵,是这样,你有3个匹配项,3*2*1=6 也就是有6个排列组合。
就算是用间隙查找,也要写6个。
所以,我个人建议,你还是分三次匹配好了
if(find("chi) && find("peo") && find("rep"))

如果你非得一个正则,你去看看间隙匹配。 也叫零宽度匹配
比如
"chi(?=peo.*?rep)"
"chi(?=rep.*?peo)"
。。。 

或者干错写6个正则,然后OR 也行
(chi.*?peo.*?rep)|(chi.*?peo.*?rep)|...
------解决方案--------------------
mark一下,和我碰到的问题类似。 最后我用Indexof方法解决了!