给定一个输入字符串,其中包含任意数量的 'x' 个字符(x, xx, xxxxx,xxxxxxxxxxxxx等等),只有当输入字符串具有质数的 'x' 个字符时,如何才能编写与输入字符串匹配的正则表达式?不应匹配长度为 1 的字符串。
例如:
匹配这些:
xx
xxx
xxxxx
xxxxxxx
但不是这些:
x
xxxx
xxxxxxxxx
这是我找到的一个解决方案 - ^(?!(xx+)\1+$)(这里,作为这个问题的答案)。但是,我想知道它为什么有效。请分享任何替代解决方案。
我正在使用 PCRE 引擎。
我意识到人们通常不会将正则表达式用于此类事情。我只是对如何做到这一点很好奇。
^(?!(xx+)\1+$)
Run Code Online (Sandbox Code Playgroud)
通过在行首执行负前瞻来工作。它将拒绝任何包含以下内容的行
xesxes,可能多次换句话说,正则表达式的工作原理是匹配任意数量的xes,这些 es 不能分成大小 >= 2 的更小、大小相等的组。
要排除仅单个的情况x,您可以使用^(?!(xx+)\1+$|x$).
| 归档时间: |
|
| 查看次数: |
742 次 |
| 最近记录: |