gpt4 book ai didi

java正则表达式去除javascript单行注释: "m" flag not working?

转载 作者:行者123 更新时间:2023-11-30 11:54:34 25 4
gpt4 key购买 nike

我一直在尝试使用以下正则表达式从 JavaScript 文件中删除单行注释:

Pattern p = Pattern.compile("(?m)(?:[\\(|\\)|;|\\}|\\{])\\s*/{2}(.*?)$");

当我在 RegexPal 中测试它时,该模式有效在某些示例 JavaScript 源代码中使用“^$ 匹配换行符”选项。

但是,将它放入我的 Java 程序时似乎出现的问题是“m”标志似乎无法正常工作。本质上,即使我在模式的开头使用“(?m)”指定标志(尽管我也尝试过使用 Pattern.MULTILINE),它似乎忽略了它完全使我的 $ 匹配整个文档末尾的所有内容,而不仅仅是 EOL。

最佳答案

对我有用:

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class MultilinePattern {

public static void main( String[] args ) {
Pattern p = Pattern.compile("(?m)(?:[\\(|\\)|;|\\}|\\{])\\s*/{2}(.*?)$");
String multilineJS = "var i = 1; // this is the first comment\n" + //
" i++; // this is the second comment\n" + //
" alert(i);";
Matcher matcher = p.matcher(multilineJS);
while ( matcher.find() ) {
System.out.println(matcher.group(1));
}
}
}

这段代码产生:

this is the first comment
this is the second comment

用于测试模式的字符串中的换行符如何:它们是否适合您的操作系统?您确定它们在您的字符串中吗?

关于java正则表达式去除javascript单行注释: "m" flag not working?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5586252/

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