单行java注释的正则表达式
我是正则表达式的新手,通过使用这个单行java注释的正则表达式,java,regex,Java,Regex,我是正则表达式的新手,通过使用这个IF[\\s]*\([^\]]*\\)[\\s]*\\{((/\\*(.\\[\\r\\n])*?\\*/)\\\\\\\s)*\\\}找到空的IF语句,它可以很好地处理空语句的多行注释,但找不到单行注释。它可以找到以下场景 if (true) { /* * fsdsddgd ddgdgdfg gdfgdgdfg gdfgdfg fgdfgfg */ /* * fsdsdd
IF[\\s]*\([^\]]*\\)[\\s]*\\{((/\\*(.\\[\\r\\n])*?\\*/)\\\\\\\s)*\\\}
找到空的IF语句,它可以很好地处理空语句的多行注释,但找不到单行注释。它可以找到以下场景
if (true) {
/*
* fsdsddgd ddgdgdfg gdfgdgdfg gdfgdfg fgdfgfg
*/
/*
* fsdsddgd ddgdgdfg gdfgdgdfg gdfgdfg fgdfgfg
*/
}
if (true) {
}
无法找到以下场景
if (true) {
// kavi
// kamal
// kamal
}
if (true) {
// kavi
}
请给我一些有价值的解决方案。这不是一个好主意,但如果你不得不… 正如您在评论中所看到的,我并不十分喜欢这个想法,但由于您提出了要求,这将与您的输入一起工作(请参阅):
将我们带到大括号的开头if\s*\([^\{]*\{
将我们带到行的末尾,并在这一过程中匹配可选注释(?:[\t]*/.*)[\t]*
匹配一系列带有可选注释的行(?:[\r\n]*[\t]*(?:/.*)*
将我们带到最后一个大括号[\r\n]*[\t]*(?://.*)
List<String> matchList = new ArrayList<String>();
try {
Pattern regex = Pattern.compile("if\\s*\\([^\\{]*\\{(?:[ \t]*//.*)?[ \t]*(?:[\r\n]*[ \t]*(?://.*)?)*[\r\n]*[ \t]*(?://.*)?}");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
matchList.add(regexMatcher.group());
}
} catch (PatternSyntaxException ex) {
// Syntax error in the regular expression
}
代码:
List<String> matchList = new ArrayList<String>();
try {
Pattern regex = Pattern.compile("(?<!else )if\\s*\\([^\\{]*\\{(?:[ \t]*//.*)?[ \t]*(?:[\r\n]*[ \t]*(?://.*)?)*[\r\n]*[ \t]*(?://.*)?");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
matchList.add(regexMatcher.group());
}
} catch (PatternSyntaxException ex) {
// Syntax error in the regular expression
}
List matchList=new ArrayList();
试一试{
Pattern regex=Pattern.compile(“(?这是你的IDE的工作。你在使用哪个IDE?Eclipse:编译器/错误/空
注意,如果你的条件中有嵌套的括号,你就无法使它工作。我没有使用Eclipse IDE。但是我为常规exp实践编写了一个示例程序,但这似乎是一场噩梦。我还需要找到单个注释。所以请指导我n regexp.Thanks为什么要在没有正确语法和解析器的情况下解析语言?类快捷方式\h
在Java->[^\S\r\n]
或[\t]中不可用
也许吧。你确定吗?RB对此很满意。让我仔细检查一下。regexplanet一点也不满意。它似乎只适用于Java 8。嗨,它在Java代码中不起作用。如果\s*([^\{]*\{(?:\h*/.*)\h*(?:[\r\n]*\h*(?:/.*)*[\r\n]*\h*(?:/.*))*。[\r\n]*\h*(?:/.]),在索引19附近获取这个非法/不受支持的转义序列“当匹配此项时。它必须是Caz建议的\h
。编辑答案后,您可以尝试新的正则表达式吗?如果\s*([^\{]*\{(?:[\t]*/.\)[\t]*(?:[\r\n]*[\t]*(?:/.*)*[\r\n]*[\t]*(?:/.*)
将在稍后发布Java代码。”。
(?<!else )if\s*\([^\{]*\{(?:[ \t]*//.*)?[ \t]*(?:[\r\n]*[ \t]*(?://.*)?)*[\r\n]*[ \t]*(?://.*)?
List<String> matchList = new ArrayList<String>();
try {
Pattern regex = Pattern.compile("(?<!else )if\\s*\\([^\\{]*\\{(?:[ \t]*//.*)?[ \t]*(?:[\r\n]*[ \t]*(?://.*)?)*[\r\n]*[ \t]*(?://.*)?");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
matchList.add(regexMatcher.group());
}
} catch (PatternSyntaxException ex) {
// Syntax error in the regular expression
}