这是课程项目的一部分。我使用Java构建了一个扫描Python代码的扫描程序。现在我必须将运行时间与Python扫描程序的Flex实现进行比较。
所以我尝试使用Flex匹配Python字符串文字。我正在尝试将string literal specification从Python文档转换为C正则表达式。
这是我到目前为止所做的:
[r|u|ur|R|U|UR|Ur|uR|b|B|br|Br|bR|BR]?('(([^\\]|[^\n]|[^'])|\\.)*'|\"(([^\\]|[^\n]|[^'])|\\.)*\"|'''([^\\]|\\.)*'''|\"\"\"([^\\]|\\.)*\"\"\")
但是当我将其应用于以下文本时:
r'' lol
r''
它匹配两条线。我希望它分别匹配每个r''
并忽略引号之外的任何内容。
答案 0 :(得分:0)
“除”\“或换行符或引号之外的任何源字符”转换为[^\\\n\']
,而不是我之前在上面写的[^\\]|[^\n]|[^']
。
找到regex101.com的错误。它有一个非常有用的正则表达式分析工具。