Regex C中字符串的正则表达式

Regex C中字符串的正则表达式,regex,flex-lexer,Regex,Flex Lexer,我想为C中的一些字符串创建一个正则表达式 这就是我到目前为止所做的: C中的字符串用双引号(“)分隔,因此正则表达式必须用\“\”包围 字符串可能不包含换行符,因此我需要执行[^\n](我想) 字符串也可能包含双引号或反斜杠字符,当且仅当它们被转义时。因此[\\\”](我想也是如此) 除此之外,别的什么都没有 非常感谢您的帮助,我对如何开始编写这个正则表达式有点迷茫。一个简单的flex模式来识别字符串文字(包括嵌入行连续体的文字): 这将允许 "string with \ line con

我想为C中的一些字符串创建一个正则表达式

这就是我到目前为止所做的:

C中的字符串用双引号(“)分隔,因此正则表达式必须用\“\”包围

字符串可能不包含换行符,因此我需要执行[^\n](我想)

字符串也可能包含双引号或反斜杠字符,当且仅当它们被转义时。因此[\\\”](我想也是如此)

除此之外,别的什么都没有


非常感谢您的帮助,我对如何开始编写这个正则表达式有点迷茫。

一个简单的flex模式来识别字符串文字(包括嵌入行连续体的文字):

这将允许

   "string with \
line continuation"
但不是

"C doesn't support
 multiline strings"
如果不想处理行延续,请删除
\\\n
选项。如果您需要trigraph支持,它会变得更烦人

虽然它可以识别字符串,但它并不试图理解它们。通常,C lexer会希望处理带有反斜杠序列的字符串,以便将
“\”\n”
转换为两个字符“NL(
0x22 0x0A
)。例如,在某个时候,您可能想看一看(尽管如果您是用C编程的话,需要对其进行调整)


Flex模式记录在中。阅读一本关于正则表达式的好参考书也可能是值得的,例如John Levine的优秀著作。

识别字符串文字(包括嵌入行连续体的文字)的简单flex模式:

这将允许

   "string with \
line continuation"
但不是

"C doesn't support
 multiline strings"
如果不想处理行延续,请删除
\\\n
选项。如果您需要trigraph支持,它会变得更烦人

虽然它可以识别字符串,但它并不试图理解它们。通常,C lexer会希望处理带有反斜杠序列的字符串,以便将
“\”\n”
转换为两个字符“NL(
0x22 0x0A
)。例如,在某个时候,您可能想看一看(尽管如果您是用C编程的话,需要对其进行调整)


Flex模式记录在中。读一本关于正则表达式的好参考书也可能是值得的,例如John Levine关于的优秀著作。

您是否尝试匹配所有不带换行符的字符串,这些字符串可能已转义反斜杠和转义双引号,也可能未转义反斜杠和转义双引号?可能重复“是”,这是正确的@NBrown@Ken发帖的Y-N问了一个类似的问题,但没有一个答案可以完成这个问题,因为它仍然允许换行符。明确地说,它是针对单行的。您是否尝试匹配所有不带换行符的字符串,这些字符串可能有也可能没有转义反斜杠和转义双引号?可能是重复的,这是正确的@NBrown@Ken发帖的Y-N问了一个类似的问题,但没有一个答案可以完成这个问题,因为它仍然允许换行性格特别是说它是针对单线的。