flex的正则表达式向前看(仅包含一个下划线的字符串)

时间:2013-01-05 23:13:42

标签: regex flex-lexer

我正在尝试找到一种方法来实现识别只有一个下划线的令牌,并且不允许以下划线开始或结束。如下所示:

abc_def:VALID TOKEN
_abc:NOT VALID TOKEN
abc_:NOT VALID TOKEN

我无法理解当下划线后面的字符会重复时,我只能允许一个下划线。这可能是flex / lex中的正则表达式吗?

2 个答案:

答案 0 :(得分:1)

DEMO

正则表达式:^[^_]+_[^_]+$

说明:

  1. [^_]+ - >任何不是_至少有一个角色的东西。
  2. _ - >下划线
  3. 与1
  4. 相同
  5. ^$是分别对字符串的开头和结尾进行分隔的锚点。
  6. 如果您想将正则表达式限制为3个字符,请使用{3}代替加号。

答案 1 :(得分:-1)

Python中的一个例子:

In [1]: import re

In [2]: re.findall(r'\b[^\s_]+_[^\s_]+\b', 'abc_def, abc__def, __abc_def, abc_def__')
Out[2]: ['abc_def']