【发布时间】:2013-01-08 20:47:22
【问题描述】:
BEGIN A B C END | A B C
上面的正则表达式应该匹配BEGIN A B C END 或A B C,而不被BEGIN 和END 包围。假设在使用 (?<ImAfterTheA>A) 中的命名组时位于 A 之后,在 Java 中,您需要为第一个 A 指定与第二个 A 不同的组名。
BEGIN (?<ImAfterTheA_1>A) B C END | (?<ImAfterTheA_2>A) B C
所以...我想缩短这个并想出了:
BEGIN? A B C END?
但话又说回来,这将匹配 A B C 或 BEGIN A B C 或 A B C END 或 BEGIN A B C END,有效匹配比我预期的更大的语言。
我能否在不扩大语言范围的情况下更简洁,从而避免匹配组使用两个不同的组名?
【问题讨论】:
-
我真的不明白你的问题。
-
这个问题几乎没有意义。更具体。
-
你的第二个正则表达式没有做你认为应该做的事情。
-
您的意思是,它应该同时具有 BEGIN 和 END 还是两者都没有?在这种情况下,只有第一个会做。
-
好吧,没有BEGIN就没有END
标签: java regex regex-group