在正则表达式中重用字符类

时间:2013-11-20 23:33:47

标签: regex hardcoded character-class

为了使正则表达式更简洁,是否有一种简短的方法来引用同一正则表达式中较早出现的字符类?

示例

有没有办法缩短以下内容:

[acegikmoqstz@#&].*[acegikmoqstz@#&].*[acegikmoqstz@#&]

1 个答案:

答案 0 :(得分:1)

请记住,正则表达式功能取决于所使用的语言。

使用Java,您可以这样做:

[acegikmoqstz@#&](?:.*[acegikmoqstz@#&]){2}

但这就是全部,使用java你不能引用命名的子模式。

使用PHP,您可以这样做:

(?(DEFINE)(?<a>[acegikmoqstz@#&]))\g<a>(?:.*\g<a>){2}