我想匹配if,else,new和..etc等关键字。请建议一个合适的正则表达式来匹配它们。
我试过
(((\\s)+(when|then|end|and))+(\\s|$))|rule|if|else|(new+(\\s))
但它无法正常工作。
答案 0 :(得分:3)
如果您有一个Java关键字列表,那么您可以将其转换为与这样的关键字匹配的正则表达式(原则上 - 以下并不是要用作实际代码,只是为了说明它是如何工作的) :
"\\b(?:" + "if" + "|" + "for" + "|" + ... + "|" + "new" + "|" + "static" + ")\\b"
例如,正则表达式使用word boundary anchors来确保它与单词if
中的knife
不匹配。
它没有语义概念,所以除非你已经完成了一些解析来将注释或字符串等与源代码的“命令部分”分开,否则你会在不一定的地方找到匹配被用作关键词。