我正在尝试创建一个 JAVA 正则表达式来测试是否设置了特定选项。目前我有 [ks]?[zx]?[ap]?
所以它要么是 k、s 或没有,然后是 z、x 或没有,最后是 a、p 或没有。
这个正则表达式的唯一问题是它只适用于这一个顺序,但它应该适用于所有订单,因为 kza
、 azk
、 zka
、 kaz
、 akz
和 zak
做同样的事情。
最佳答案
钢铁自己 - 这个答案强化了正则表达式作为只写语言!
^(([ks](?!.*[ks]))|([zx](?!.*[zx]))|([ap](?!.*[ap]))){0,3}$
如果您将 Groovy(或 Java 7)用于多行字符串,则可以更清楚地写成这样:
^(?x:
( ( [ks] (?!.*[ks]) )
| ( [zx] (?!.*[zx]) )
| ( [ap] (?!.*[ap]) )
) {0,3}
)$
此版本匹配每个组,仅当该组未出现在字符串后面的某个位置时。这是一个“零宽度,前瞻断言”。
关于java - 正则表达式用于无任何顺序的选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10962086/