gpt4 book ai didi

java - 用 Ant 脚本替换正则表达式

转载 作者:行者123 更新时间:2023-12-01 05:01:27 25 4
gpt4 key购买 nike

我在 replaceregexp 方面遇到一些问题。为了更容易理解,我将使用简单的示例,而不是真正的代码。

所以假设我有 2 个 java 文件:

firstClass.java

/**
* UNDESIRABLE COMMENTS ABCDEFGHIJ ABCDEFGHIJ ABCDEFGHIJ ABCDEFGHIJ ABCDEFGHIJ
* ABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJ
*/
public class firstClass{
public String firstFunction(){
<instructions>
}

/**
* My function's description that I want to keep
*/
public String secondFunction(){
<instructions>
}
}

第二类.java

/**
* UNDESIRABLE COMMENTS ABCDEFGHIJ ABCDEFGHIJ ABCDEFGHIJ ABCDEFGHIJ ABCDEFGHIJ
* ABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJ
*/
public class secondClass{
public String firstFunction(){
<instructions>
}
}

所以我想删除项目中每个java文件的“UNDESIRABLE COMMENTS”部分,但我想用ANT来完成,而不是手动。为此,我正在使用这个:

<replaceregexp flags="s">
<regexp pattern="UNDESIRABLE COMMENTS.+\*/"/>
<substitution expression="*/"/>
<fileset dir=".">
<filename name="*.java"/>
</fileset>
</replaceregexp>

我想要的是得到这个代码:

firstClass.java

/**
*/
public class firstClass{
public String firstFunction(){
<instructions>
}

/**
* My function's description that I want to keep
*/
public String secondFunction(){
<instructions>
}
}

第二类.java

/**
*/
public class secondClass{
public String firstFunction(){
<instructions>
}
}

它对于 secondaryClass.java 非常有效,但对于第一个文件则不然。当有其他注释(例如函数的描述)时,就会出现问题。文件 secondary.java 结果很好,但在firstClass.java 中我得到了这个:

/**
*/
public String secondFunction(){
<instructions>
}
}

从“不受欢迎的评论”开始到第二个函数描述结束之间的所有内容都被删除。

所以问题是:当我的replaceregexp找到更多*/时,它会停在最后一个,并删除“UNDESIRABLE COMMENTS”和最后一个*/之间的所有内容。

您有什么解决方案可以删除“UNDESIRABLE COMMENTS”和找到的第一个 */之间的内容吗?

最佳答案

您的问题是正则表达式中的 + 量词是 greedy ,并且将在仍然匹配的情况下消耗尽可能多的输入。尝试一下

UNDESIRABLE COMMENTS.+?\*/

相反 - +?+ 含义相同,但为 reluctant即,它将尽可能匹配,同时仍然产生整个表达式的整体匹配。

关于java - 用 Ant 脚本替换正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13344655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com