gpt4 book ai didi

java - 可以检测 Java 关键字的算法,但如果包含在字符串中则不能

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:30:39 28 4
gpt4 key购买 nike

我正尝试在 Java 中提出一种算法,该算法可以检测给定代码是否包含 Java 关键字并捕获它们以进行正确格式化。

要注意的是,我只想检测不在字符串文字中的关键字。

例如在声明中

return "我爱抽象"+ this.artform

我想捕获 returnthis,但不是 abstract

到目前为止:

到目前为止,我已经成功创建了一个可以检测所有关键字的正则表达式。

regexp = "(?<=\\W?)(" + keywords.toString() + ")(?=(\\s|\\(|\\.|\\{))"

但是,现在它变得复杂了,因为我需要将它与知道匹配何时在文字中的能力集成。

最佳答案

像您提到的那样,很难整合次要部分。像您一样在第一部分继续使用正则表达式技术。使用 java.util.regex.Pattern 和 java.util.regex.Matcher,您可以通过使用 find() 方法(在每个关键字上)来确定是否存在匹配项。如果为 true,则可以调用 start() 方法来确定上次调用 find 方法时关键字的位置。 (串联使用这些方法)。

棘手的部分实际上很容易使用 String 类来确定 '"' 双引号字符的所有实例并获取它们的字符位置。接下来计算关键字位置的开始是否大于第一个双引号的位置和小于下一个双引号字符的位置。首先你需要确保一个双引号是它各自双引号对的兄弟。当然你可能想确保整个关键字介于两者之间这两个位置。此外,如果这种情况适用,您需要对落在单独行或连续行上的双引号保持聪明。

基本上不要尝试使用正则表达式来应用次要部分是我的建议,除非你真的想疯狂地尝试实现它。

关于java - 可以检测 Java 关键字的算法,但如果包含在字符串中则不能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16862192/

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