1

问题如下:我有一个 Javadoc 生成的 HTML 文件,其中包含 Java 类名和一些附加信息,如下所示:

{@link ml.foo.bar.BazAccEd} (Text) Some text
{@link ml.foo.bar.BazAccGrp} (Text) Some text BazAccGrpList
{@link ml.foo.bar.BazAccEdOrGroup} (Text) Some text {@link.ml.foo.bar.BazAccEdList}

我需要从中提取(使用 Ant 正则表达式功能)Java 类的短名称,并且仅在它们是链接的一部分的地方,插入逗号代替原始普通文本,以便上面的示例产生

BazAccEd
BazAccGrp
BazAccEdOrGroup, BazAccEdList

它可能并不太复杂,但我没有遇到正确的正则表达式,它只会解析链接并从中提取正确的数据。提前致谢。

4

2 回答 2

3

鉴于您提供的输入,这应该有效。它通过捕获句点和右花括号之间的文本来工作:

\.([A-Za-z\d_]+)(?=})(?:.+\.([A-Za-z\d_]+)(?=}))*

这将返回两个捕获的组\1\2. 为了使逗号替换正常工作,您必须检查\2. \1如果是这样,请在和之间插入一个逗号\2

解释:

\.([A-Za-z\d_]+)(?=}) # look for a period, characters, and lookahead for closing curly brace. Capture the characters
(?:          # open a non-capturing group
.+           # gobble up characters until ...
\.([A-Za-z\d_]+)(?=}) # ... you find the same thing as in the first line above
)*           # make the non-capturing group optional
于 2012-05-09T12:29:03.330 回答
1

您可以使用该正则表达式。

{@link[ .][a-zA-Z] .[a-zA-Z] .[a-zA-Z] .([AZa-z0-9] )}

于 2012-05-09T12:28:07.943 回答