regex 匹配所有C样式标记但忽略双字符串的正则表达式

mfpqipee  于 2023-03-09  发布在  其他
关注(0)|答案(2)|浏览(104)

我正在解析类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”,我需要做什么来排除带空格的双引号字符串?

bihw5rsg

bihw5rsg1#

此正则表达式将工作:

(?<!")\w+(?![\w\s]*\w"|")

注意,它不排除ifelsereturn关键字,我认为我们不应该再复杂化正则表达式,而应该在代码中通过简单的if else块进行过滤。

m1m5dgzv

m1m5dgzv2#

基于RifloSnake的解决方案,我想出了这个方法。它看起来很有效。但它没有排除ifelsereturn关键字。我可以在后期处理中处理这些情况。
\b(?<!"")[a-zA-Z_]+[a-zA-Z_0-9]+(?![\w\s]*\w""|"")\b

相关问题