java - 在 "10 println "行中查找注释的正则表达式是什么 Testing if then"//Test Comment

标签 java regex comments lexer

对于行,

10  println "Testing Comment" //Test Comment

查找整个字符串的“//Test Comment”的正则表达式可以是什么。我想用它来进行标记化,因为我正在用 Java 创建词法分析器。

代码:

StringBuilder sb = new StringBuilder();
    String[] p = new String[5];
    p[0] = "(?<Reserved>\\bPRINTLN\\b)"; //RESERVED WORDS 
    p[1] = "(?<Comments> //.*)";
    p[2] = "(?<Constants>[0-9]+)"; //Constants eg: 21 54 14215
    p[3] = "(?<Special>[\\[\\]/.$*\\-+=><#()%,!|&{}])"; //SPECIAL CHAR Eg:-+*/ etc
    p[4] = "(?<Identifiers>\\w+)"; //Identifiers eg: circum radius


    for (String s: p) {
        sb.append(String.format("|(%s)", s)); 
    } //for ends here

    Pattern tp = Pattern.compile(new String(sb.substring(1))); // adding the patterns one after another separated by |

    Matcher m = tp.matcher(line);

我试过使用//.* 但它与注释不匹配。 使用匹配器中的查找方法,我基于命名的捕获组进行标记。

最佳答案

你可以试试this regex :

\/\/.*
  • \/\/ 匹配 // 开始评论
  • .* 匹配 // 之后的任意数量的字符,行终止符除外

您的问题一定是您使用了// 而不是\/\// 是元字符,已用反斜杠转义。下次我建议您使用 regex101在询问之前,简单的错误将被突出显示,您可以快速测试它。

关于java - 在 "10 println "行中查找注释的正则表达式是什么 Testing if then"//Test Comment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40539401/

相关文章:

java - 使用正则表达式从文本中删除连续的重复单词并显示新文本

指定问题编号的 Javadoc

Emacs:在评论中突出显示 TODO *only*

java - 如何更改 JComboBox 颜色?

java - 升级到 Gradle 6 后,Jenkins 控制台上未打印上传的 War 或 Tar 信息

regex - 在 linux 和 AIX 中使用正则表达式替换 bash 脚本中的字符串

objective-c - Typedef 枚举的内联文档注释 block

java - 如何使用 LWUIT 居中对齐列表

java - 将第一个、第二个和第三个 int 扫描器值分配给 3 个不同的队列

javascript - match 函数返回一个包含两个元素而不是一个元素的数组