我一直在尝试使用以下正则表达式从JavaScript文件中删除单行注释:
Pattern p = Pattern.compile("(?m)(?:[\\(|\\)|;|\\}|\\{])\\s*/{2}(.*?)$");
当我使用某些示例JavaScript源代码中的“^ $ matches line break”选项在RegexPal之类的内容中测试时,该模式有效。
但是,将它放入我的Java程序时似乎是一个问题是“m”标志似乎无法正常工作。基本上,即使我在模式的开头使用“(?m)”指定了标志(尽管我也尝试过使用Pattern.MULTILINE
),但它似乎完全忽略了它$
{{ 1}}匹配整个文档末尾的所有内容,而不仅仅是EOL。
答案 0 :(得分:1)
适合我:
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
用于测试模式的String中的换行符:它们对您的操作系统是否正确?你确定他们在你的弦中吗?