Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.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_Python_C#_Php_Java_Javascript - Fatal编程技术网

Regex 使用命名的正则表达式组来缩短模式

Regex 使用命名的正则表达式组来缩短模式,regex,python,c#,php,java,javascript,Regex,Python,C#,Php,Java,Javascript,我试图在正则表达式中使用命名组来减小正则表达式的大小。然而,即使以最简单的形式,在清除了所有的“噪音”后,我也无法让它工作 当我在regex101的文档中尝试这个例子时,它是有效的 /(?<first>a+) and again (\k<first>)/ 我希望“下一个十二月”与第一行匹配,但实际上,它只与两行中的“十二月”匹配 你可以在这里找到正则表达式 文档只提到命名组必须位于左侧 我缺少什么?您应该使用(?p>月)或(?p>月)而不是\k: (?十二月)|^(下一

我试图在正则表达式中使用命名组来减小正则表达式的大小。然而,即使以最简单的形式,在清除了所有的“噪音”后,我也无法让它工作

当我在regex101的文档中尝试这个例子时,它是有效的

/(?<first>a+) and again (\k<first>)/
我希望“下一个十二月”与第一行匹配,但实际上,它只与两行中的“十二月”匹配

你可以在这里找到正则表达式

文档只提到命名组必须位于左侧

我缺少什么?

您应该使用
(?p>月)
(?p>月)
而不是
\k

(?十二月)|^(下一个)\s(十二月)

有关重用部分正则表达式的问题的相关链接

  • :
  • :

  • :
  • :

谢谢@wiktor stribiżew,这绝对有帮助。不幸的是,这种语法在C中不起作用。知道吗?@SafwanHak为什么不从一开始就添加正确的标签。NET根本不支持递归/regex子例程。我认为这是我对regex的误解和对\k的滥用。只是在你提出建议后,才出现了C#问题。
(?<months>December)|^(next)\s((?&months))
                              ^^^^^^^^^^ 
(?<months>December)|^(next)\s((?P>months))
                              ^^^^^^^^^^^ 
var rep = "December";
var ThePattern = $@"(?<months>{rep})|^(next)\s({rep})";