什么可以是正则表达式,如果再找到行“10的println‘测试注释’//测试点评

问题描述:

为线,什么可以是正则表达式,如果再找到行“10的println‘测试注释’//测试点评

10 println "Testing 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); 

我一直在使用//.*尝试,但其不匹配的评论 使用ma的find方法tcher,我正在基于指定的捕获组进行标记。

+0

试图 “//.*”,但没有运气 – Ronn

+1

看一看https://regex101.com/和尝试\/\/* –

+0

给编译错误 “无效的转义序列(有效问卷是\ b \牛逼\ n \˚F\ r \” \” \\)”为 “\/\ /.*” – Ronn

试试这个:

(?=\/\/)[\s\S]+ 

演示:https://regex101.com/r/1IESlB/1

+0

谢谢。这对我也有效。 :) – Ronn

您可以尝试this regex

\/\/.* 
  • \/\/比赛//开始评论
  • .*匹配字符后的//任何金额,除了行结束

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

+0

当我添加2 \时为我工作。即\\ \ \\。*。谢谢。我将明确使用您提供的链接。 – Ronn