Lezer语法中匹配首尾奇数个双引号的正则表达式问题
解决Lezer中奇数双引号字符串的正则匹配问题
开头匹配正则
用于匹配str前缀后跟奇数个双引号的起始标记,正则表达式如下:
^str("")*"
- 逻辑说明:
("")*匹配任意偶数个连续双引号,后续紧跟一个单独的",整体组合就是奇数个双引号;^str锚定前缀,确保只匹配以str开头的目标。这个正则会精准命中第1行的str"和第2行的str""",自动排除第7行的str""(偶数个引号)。
结尾匹配正则
用于匹配对应开头的奇数个双引号结束标记,正则表达式如下:
("")*"$
- 逻辑说明:同样通过
("")*加单个"凑出奇数个双引号,$锚定行尾,确保匹配的是行末的引号组。这个正则会匹配第1行的"和第6行的""",不会误判其他位置的引号。
适配Lezer的补充说明
Lezer支持跨行扫描,当开头正则匹配成功后,解析器会持续扫描内容,直到找到符合结尾正则的奇数个双引号,中间的所有内容(包括换行)都会被自动跳过,完全满足你“内部内容需被解析器跳过”的需求。
内容的提问来源于stack exchange,提问作者Akrion
相关产品推荐
相关产品推荐

