Java 用于检测注释/字符串的正则表达式,无冲突、方法名、类名

Java 用于检测注释/字符串的正则表达式,无冲突、方法名、类名,java,regex,string,methods,comments,Java,Regex,String,Methods,Comments,我正在创建一个简单的IDE 这是通过使用正则表达式检测代码类型并在JTextPane中对其着色来实现的 目前,我可以检测到: 评论 字符串文字 数字 关键词/限制词 以下是我的程序示例: 问题1:我的正则表达式检测字符串文本,然后进行注释。因此,它会覆盖其颜色,导致字符串内的注释颜色错误。 这是用于检测注释的正则表达式: Pattern commentsSingle = Pattern.compile("\\/\\/.*"); Pattern commentsMulti = Pattern

我正在创建一个简单的IDE

这是通过使用正则表达式检测代码类型并在JTextPane中对其着色来实现的

目前,我可以检测到:

  • 评论
  • 字符串文字
  • 数字
  • 关键词/限制词
以下是我的程序示例:

问题1:我的正则表达式检测字符串文本,然后进行注释。因此,它会覆盖其颜色,导致字符串内的注释颜色错误。

这是用于检测注释的正则表达式:

Pattern commentsSingle = Pattern.compile("\\/\\/.*");
Pattern commentsMulti = Pattern.compile("\\/\\*.*?\\*\\/", Pattern.DOTALL);
这是用于检测字符串文字的正则表达式:

Pattern strings = Pattern.compile("((?<!\\\\)\\\"(.*?)\\\"(?<!\\\\\\\"))");

Pattern strings=Pattern.compile(((?Pro-tip):你做错了

编程语言中有太多复杂的结构,无法用正则表达式来解释。即使语言相当简单,正则表达式也会很快变得非常难以维护和更新。不仅如此,正则表达式很快开始在大型数据集上缓慢运行

你最好的选择是


您将能够非常快速地标记代码的各个部分,并且能够支持多种语言。

iismathwizard是正确的,解析器会更好,但我认为作为正则表达式练习,这是一个非常好的主意。不过,您可以尝试以下方法:

  • 方法:
    [\w$]+(?=\([^)]*\)\s*\{

  • Java类:
    (?您显然没有仔细考虑您的逻辑。@PM 77-1您的意思是我不应该检测注释、字符串和覆盖其颜色吗?还是我的正则表达式逻辑不正确?Pro提示:斜杠(
    /
    )和引号(
    )在正则表达式中有任何特殊的含义。引号需要用一个反斜杠转义,因为它是字符串文字,斜杠不需要任何符号。我知道我不应该使用正则表达式来做任何事情,但这只是我个人的简单项目,我正在学习正则表达式。我只需要一些帮助来修复我的正则表达式,以检测非常复杂的正则表达式暗示codes@user3188291问题是,您希望检测除了上下文之外几乎无法区分的方法名和类名。正则表达式和上下文彼此之间的关系不好,您将很难让它正常工作。老实说,我认为这是不可能的。此外,实现lexer是非常困难的这并不难,而且只需要一点时间。假设你有一个语法,那么解析器只需要多做一点工作。哦,好吧。如果QN2和QN3无法解决,我理解。谢谢你的反馈。但是我的小项目的主要目的是理解和学习如何使用正则表达式。我不希望使用其他方法ods感谢您的反馈。下次我会尝试将问题分成3个部分!我已经在regex101中测试了两个正则表达式,但它不起作用。但我仍然感谢您的帮助。谢谢!您能告诉我如何检查regex101是否有效吗?这样会更容易找到解决方案。类,方法