匹配标识符但不匹配保留关键字的模式

Pattern to match an identifier but not matching reserved keywords

我正在尝试设计与标识符匹配的正则表达式,除非它是保留关键字。
这是我尝试过的方法:(?!{}(?![_a-zA-Z0-9]))[_a-zA-Z][_a-zA-Z0-9]* 其中 {}if|else|while 之类的东西取代。不幸的是,它无法匹配 任何 begins 与保留关键字,所以像 ifa 这样的东西不会通过。
如何设计一个合适的正则表达式?

您似乎缺少的部分是单词边界的 \b。按照这些思路应该可以工作:

(?!(if|else|while)\b)\b\w+