【发布时间】:2015-07-10 04:18:52
【问题描述】:
我正在创建一个简单的 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 的示例输出:
Q2:我应该编辑我的字符串检测正则表达式来解决这个错误吗?
提前致谢。
如果有人觉得有帮助,我的字符串 IDE 检测正则表达式来自:
Which is the right regular expression to use for Numbers and Strings?
【问题讨论】:
-
如果我可以通过 1 个正则表达式匹配同时获得字符和字符串着色,那将是最理想的情况。
-
注意项目符号4:blog.codinghorror.com/…
标签: java regex string char jtextpane