CAF*_*FxX 5 regex permutation superset
假设我有一组字符[ABC].我正在寻找一个正则表达式,它可以匹配超集的任何排列,除了空集,即
ABC ACB BAC BCA CAB CBA
AB BC AC CB CA BA
A B C
Run Code Online (Sandbox Code Playgroud)
正则表达式应该(显然)与空字符串不匹配.
ps表达相同目标的另一种方法是"匹配至少包含一次集合中每个字符的任何非空字符串".
更新:集合[ABC]只是一个例子,因为真实集合也可能更大.有了这个问题,我希望找到一个"通用"的解决方案而不是特定的解决方案[ABC].
我相信这可以通过正则表达式来解决.使用这个正则表达式:
/^([ABC])(?!\1)([ABC])?(?!\1|\2)[ABC]?$/
Run Code Online (Sandbox Code Playgroud)
如果您需要在线演示,请告诉我.
感谢您的回答(尤其是 anubhava 和 codaddict 的),我能够找到这个解决方案,我认为它非常优雅,因为它允许仅输入一次集合:
\b(([ABC])(?!.*\2))+\b
Run Code Online (Sandbox Code Playgroud)
需要\b匹配完整的单词;省略它们也会找到符合所需属性的子词。要匹配完整的字符串,您显然会这样做:
^(([ABC])(?!.*\2))+$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2146 次 |
| 最近记录: |