Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在正则表达式中重用字符类_Regex_Hardcoded_Character Class - Fatal编程技术网

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

Regex 在正则表达式中重用字符类,regex,hardcoded,character-class,Regex,Hardcoded,Character Class,为了使正则表达式更简短,是否有一种简写方法来引用同一正则表达式中较早出现的字符类 示例 有没有办法缩短以下时间: [acegikmoqstz@#和].[acegikmoqstz@#和].[acegikmoqstz@#和]请记住,正则表达式功能取决于所使用的语言 使用Java,您可以执行以下操作: [acegikmoqstz@#&](?:.*[acegikmoqstz@#&]){2} 但仅此而已,对于java,您不能引用命名子模式 使用PHP,您可以做到这一点: (?(DEFIN

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

示例

有没有办法缩短以下时间:


[acegikmoqstz@#和].[acegikmoqstz@#和].[acegikmoqstz@#和]

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

使用Java,您可以执行以下操作:

[acegikmoqstz@#&](?:.*[acegikmoqstz@#&]){2}
但仅此而已,对于java,您不能引用命名子模式

使用PHP,您可以做到这一点:

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

Hmm。。。您使用的是什么编程语言?使用变量动态创建正则表达式可能是最佳选择。例如,在Python中,您可以执行
cc=r'[acegikmoqstz@#&];regex=r'{0}.*{0}.*{0}'。format(cc)
。在大多数编程语言中,没有;但是在regexp是字符串的语言中,您可以通过使用先前定义的strings.argh构建regexp来获得相同的效果,就像@F.J刚刚说的:-)@NoBrainer Java一样,但我也很感兴趣的是,这是否只能通过regex实现