是否可以在Regex中的模式内部重用子模式

本文关键字:内部 模式 子模式 Regex 是否 | 更新日期: 2023-09-27 18:29:55

我正试图用C#编写Regex,但我有类似的结构,我不想重复使用。

例如:我想将所有序列与具有人名的序列进行匹配,然后再看:

George Michael Jacobson

正则表达式是这样的:

[A-Z][a-z]+'s[A-Z][a-z]+'s[A-Z][a-z]+
^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^

你可以看到我复制了图案的部分->[A-Z][a-z]+

我只想在定义好之后再使用它。

PS:分组中的'k<name>'n不能满足我的需要。它与特定组中的文本MATCHED相匹配。我只需要重新使用子插件。

是否可以在Regex中的模式内部重用子模式

^([A-Z][a-z]+(?:'s+|$)){3}$

你可以试试这个。你可以使用任何你想要的东西,而不是3。请参阅演示。

http://regex101.com/r/tF5fT5/33

你能再解释一下这个场景吗。有很多重复匹配的方法。考虑模式[a-z][A-Z]+'s

如果你希望它只出现3次,那么你可以在模式后使用3个内花括号,即([a-z][A-Z]+'s){3},如果你希望0到无限次([a-z][A-Z]+'s)* ,你可以使用星号

或者您可以将图案的这一部分保留在字符串string part="[a-z][A-Z]+'s";中,并将part凹进图案中的任意位置多次。