正则表达式匹配排序的单词和至少一个

时间:2015-06-29 10:30:07

标签: regex localizable.strings

我想知道是否有一种更简单的词匹配方式,至少有一个是强制性的。

为了简化事情,想象我的单词是A,B和C.我希望匹配A,B,C,AB,BC,AC但是对于CA,它将C和A作为分开的匹配,订单很重要。因此我提出了第一个想法:

A?B?C?

我发现的唯一问题是它也匹配空字符串,我得到了无效的匹配。我想要的是一些更简单的做法:

(AB?C?|A?BC?|A?B?C)

在ABCASDBC匹配:ABC,A,BC。 我真正的问题可以有更多的单词,表达式可以增长并且计算成本昂贵。这是我最关心的问题(不使用正则表达式的另一种解决方案也是受欢迎的)

1 个答案:

答案 0 :(得分:3)

(?=[xyz])x?y?z?

或者如果x,y,z不是字符:

(?=x|y|z)(?:x)?(?:y)?(?:z)?

这个想法是首先使用正向前瞻来匹配三者中任何一个的存在,然后是订单本身的序列。