【发布时间】:2017-08-28 07:33:28
【问题描述】:
例如,我正在尝试重用正则表达式组:
(?<var>[A-Za-z](\d*\w*)*)
匹配大多数变量名,例如abc、abc123、abc_123、abc_123_abc 等等。
有没有一种方法可以重复使用这个组而不用再次输入整个模式?
例如,如果我想创建一个正则表达式来匹配以下字符串:
abc_123 AS xyz_89
我需要创建一个像这样的 reg ex:
^([A-Za-z](\d*\w*)*)( AS )([A-Za-z](\d*\w*)*)$
并且匹配类似的东西:
abc_123.def_456 AS xyz_89
我需要使用相同的模式 3 次。
能够参考第一组似乎更有效率,所以我不重复正则表达式逻辑。我读过关于反向引用的文章,但似乎它们是为了匹配相同的 value 而不是一般模式。
【问题讨论】:
-
你用的是什么正则表达式?
-
反向引用仅返回在正则表达式的前一部分中捕获的内容。它实际上并没有合成任何新信息。
-
顺便说一句,
(\d*\w*)*正在打开通往灾难性回溯地狱的大门。 -
@anubhava Java 当前
-
@SebastianProske 我愿意接受更好的方法来实现同样的目标:)