正则表达式反向匹配

时间:2014-03-18 16:19:26

标签: flex-lexer regex-negation

我正在使用flex开发我的词法分析器,我需要创建一个匹配''(两个单引号)的规则和一个除了两个单引号之外的任何规则。第一部分很简单,只有\'\'完成工作,但我不确定如何编写其他规则。我想它需要某种逆正则表达式,但我不熟悉flex正则表达式。

由于

3 个答案:

答案 0 :(得分:0)

您可以使用此规则:

([^']+|\'[^']+)+|([^']+|\'[^']+)+\'$

因为您定义了另一个规则:'',因为flex将占用一个位置的最长匹配。此规则不能匹配两个(或更多)连续引号,并允许在字符串末尾使用单引号。

答案 1 :(得分:0)

对于第二个任务,使用分隔符''拆分字符串。所以你有所有不包含分隔符并由它分隔的子字符串。

答案 2 :(得分:0)

在flex中试试这个:

(([^'])|(\'[^']))+

解释:

[^']匹配任何字符,但只有一个引号。

\'[^']匹配单个引号,后跟任何其他字符。

编辑:添加额外的parens以确保正确的优先权。