是否可以构建一个正则表达式来匹配scala源文件中的所有关键字?
到目前为止,我带来的最好:
"""(?<![\w`])(%s)(?![\w\_])""" format keyword
这是否足够好还是我错过了什么?
答案 0 :(得分:4)
显而易见的解决方案是构建匹配所有关键字的正则表达式,您只需创建一个关键字(if|else|...)
的大型OR-ing即可。但是,您需要排除字符串,评论和任何可能包含非关键字的免费关键字的文字。
当我们考虑正则表达式时,regexp以实际方式可以实现的目标是有限的。也就是说,regexp不一定适合你的问题。
原因是您必须匹配大量无效输入,然后将其丢弃。
e.g。你将如何处理终止于a的典型C风格注释 新线?
最终,您需要的是Scala的标记器,您可能会在Scala发行版中找到它。