为C字符串编写正则表达式

时间:2015-01-30 17:19:30

标签: c regex string

我目前正在学习正则表达式,我正在试图弄清楚如何在C中捕获不允许换行的字符串。我已经四处寻找有关flex和lex的答案,但我正在努力学习它,因为我可以更好地理解它。

这是我发现的一个表达式,它似乎很常见(我发现了很多)。但我仍然没有找到明确的解释,说明它的含义以及如何使用它。

\"(\\.|[^"])*\"

1 个答案:

答案 0 :(得分:3)

这个表达式的含义是在开头和结尾都必须有一个双引号\",并且下面会有一个零或更多的序列:

  • 反斜杠字符\\后跟任何单个字符.
  • 非双引号字符[^"]

第一个条款是不言自明的。第二个子句用于将任何以反斜杠开头的单个字符视为转义序列。这可以确保表达式将捕获以下任何字符串:

"string \"one\" has embedded doublequotes"
"string two \
is split across \
multiple lines"
"string\tthree\nhas\tembedded\tescape\tcharacters"