我正在创建一个简单的IDE来根据源代码为我的JTextPane着色。目前,我能够匹配:
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的示例输出:
Q2:我应该编辑我的字符串检测正则表达式来解决此错误吗?
提前致谢。
如果有人发现有帮助,我从我的String IDE检测正则表达式:
Which is the right regular expression to use for Numbers and Strings?
答案 0 :(得分:1)
这应该有效:
Pattern stringPattern = Pattern.compile("((?<!\\\\)\\\"(.*?)\\\"(?<!\\\\\\\"))");
答案 1 :(得分:0)
为什么不使用现成的库,如下所示:
https://github.com/bobbylight/RSyntaxTextArea