我正在解析类C语法,希望匹配所有C标识符,但忽略双引号字符串和某些关键字。例如,在以下代码中:
- hello“hello”floop“hello这是我”如果不返回noobie_234*
我想匹配hello、floop和noobie_234。
以下是我目前所了解到的:@"(\b(?!""|if|else|return)[a-zA-Z_]+[a-zA-Z_0-9]+(?!"")\b)"
它适用于所有的字符串,除了带空格的双引号字符串,例如,“hello this is me”,我需要做什么来排除带空格的双引号字符串?
2条答案
按热度按时间bihw5rsg1#
此正则表达式将工作:
注意,它不排除
if
,else
,return
关键字,我认为我们不应该再复杂化正则表达式,而应该在代码中通过简单的if else块进行过滤。m1m5dgzv2#
基于RifloSnake的解决方案,我想出了这个方法。它看起来很有效。但它没有排除
if
、else
和return
关键字。我可以在后期处理中处理这些情况。\b(?<!"")[a-zA-Z_]+[a-zA-Z_0-9]+(?![\w\s]*\w""|"")\b