Java Regex将字符串和字符与'''匹配

时间:2015-07-10 04:18:52

标签: java regex string char jtextpane

我正在创建一个简单的IDE来根据源代码为我的JTextPane着色。目前,我能够匹配:

  • 评论(//& / * * /)
  • 字符串(“”)
  • 数字(整数和小数)
  • 关键字(例如public / protected ..)

Q1:我想像字符串一样包含字符着色。例如:char c ='a';

我是否应该更改我的字符串正则表达式以满足字符检测?

经过大量测试后,我检测到一个场景会弄乱我的字符串检测着色是当用户输入char c ='“';第二个被检测到的字符串会将其检测为第一个字符串的一部分(示例如下所示。

我的字符串着色弄乱了我的整个IDE着色:(

这就是我检测字符串模式并为其设置颜色的方法:

Pattern strings = Pattern.compile("\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"");
Matcher matcherS = strings.matcher(text);
while (matcherS.find())
    setCharacterAttributes(matcherS.start(), matcherS.end() - matcherS.start(), red, false);

以下是我的IDE的示例输出:

enter image description here

Q2:我应该编辑我的字符串检测正则表达式来解决此错误吗?

提前致谢。

如果有人发现有帮助,我从我的String IDE检测正则表达式:

Which is the right regular expression to use for Numbers and Strings?

2 个答案:

答案 0 :(得分:1)

这应该有效:

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

请参阅:https://regex101.com/r/kT4oZ1/1

答案 1 :(得分:0)

为什么不使用现成的库,如下所示:
https://github.com/bobbylight/RSyntaxTextArea