正则表达式反向引用为什么不工作

时间:2018-03-24 02:41:24

标签: regex regex-negation regex-lookarounds regex-group regex-greedy

我有正则表达式((\w;)+\w\n)(-{3,}\n)((\w;)+\w\n)+,它与以下文字匹配:

H;e;l;a;a
---------
J;a;c;k;p

as can be seen here

我注意到在我的正则表达式中我有((\w;)+\w\n)的重复部分所以我试图使用反向引用来重构我的正则表达式。

所以我得到((\w;)+\w\n)(-{3,}\n)\1+,但这个与上面的示例文本不匹配。为什么这种反向引用不起作用?

1 个答案:

答案 0 :(得分:0)

((\w;)+\w)\n-{3,}\n((?1)\n)+(?1)

这似乎适用于本案例,并且遵循PCRE中的文字。

[示例文本]

H;e;l;a;a
---------
J;a;c;k;p
c;d;e;d;c
f;d;e;c;d
k;d;c;d;s
d;e;f;d;e

Demo

如果示例文本以换行符(\ n)结尾,则不需要此正则表达式中的最后一部分(?1)