是否可以在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
相匹配。我只需要重新使用子插件。
^([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
凹进图案中的任意位置多次。