gpt4 book ai didi

java - 哪个是用于数字和字符串的正确正则表达式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:08:55 25 4
gpt4 key购买 nike

我正在尝试创建简单的 IDE 并基于以下内容为我的 JTextPane 着色

  • 字符串 ("")
  • 注释(//和/* */)
  • 关键字(public、int ...)
  • 数字(整数如 69 和 float 如 1.5)

我为源代码着色的方式是覆盖 StyledDocument 中的 insertString 和 removeString 方法。

经过多次测试,我已经完成了评论和关键字。

Q1:至于我的字符串着色,我根据这个正则表达式为我的字符串着色:

Pattern strings = Pattern.compile("\"[^\"]*\"");
Matcher matcherS = strings.matcher(text);

while (matcherS.find()) {
setCharacterAttributes(matcherS.start(), matcherS.end() - matcherS.start(), red, false);
}

这在 99% 的情况下都有效,除了当我的字符串包含特定类型的字符串时,代码中有一个 "\。这弄乱了我的整个颜色编码。谁能纠正我的正则表达式以修复我的错误?

Q2:对于Integers和Decimal coloring,根据这个正则表达式检测数字:

Pattern numbers = Pattern.compile("\\d+");
Matcher matcherN = numbers.matcher(text);
while (matcherN.find()) {
setCharacterAttributes(matcherN.start(), matcherN.end() - matcherN.start(), magenta, false);
}

通过使用正则表达式“\d+”,我只处理整数而不处理 float 。此外,作为另一个字符串的一部分的整数被匹配,这不是我在 IDE 中想要的。哪个是用于整数颜色编码的正确表达式?

下面是输出的截图: enter image description here

提前感谢您的帮助!

最佳答案

对于字符串,这可能是最快的正则表达式 -

"\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\""

格式化:

 " [^"\\]* 
(?: \\ . [^"\\]* )*
"

对于整数和小数,我所知道的唯一万无一失的表达式是
这 -

“(?:\\d+(?:\\.\\d*)?|\\.\\d+)”

格式化:

 (?:
\d+
(?: \. \d* )?
| \. \d+
)

作为旁注,如果您从
开始就独立完成每个操作您可能重叠的字符串突出显示。

关于java - 哪个是用于数字和字符串的正确正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31299328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com