正则表达式(lex flex):由双条分隔的字符串

时间:2014-01-08 21:28:18

标签: regex yacc lex

我想写一个正则表达式规则(对于lex,但一般正则表达式应该没问题),如下所示:

arbitrary-length-string || arbitrary-length-string

字符串可以包含除“||”之外的所有字符符号。它可能包含'|'。

所以,基本上需要一个正则表达式来捕获所有字符串,但“||”。但是,坚持这一步。

有人可以给我一个如何为这样的字符串写正则表达式的提示吗?

1 个答案:

答案 0 :(得分:1)

不包含||的字符串可以被认为是由单个字符组成的字符串的集合,然后由垂直条分隔。例如,像

这样的字符串
ab|cd|ef|gh
|ab|cd|ef

等。遵循这种模式。这些字符串

  • 以非空字符串
  • 开始(可选)
  • 然后包含任意数量的竖线,后跟非空字符串和
  • 可选择以竖线结束。

假设允许的唯一字符是“a”和“|”,则一个正则表达式为

  

(A +)(\ | A +)?* \ |

(我正在使用\ |代表|字符,因为它需要被转义)。我想你可以通过用“||”连接那个正则表达式的两个副本来为你的整体需求写一个正则表达式在中间。

希望这有帮助!