【发布时间】:2015-11-25 22:16:12
【问题描述】:
我正在开发一个使用 flex/bison 的解析器来解析线性时序逻辑公式。我也在使用相同的扫描仪来解析这些公式的输入。
我正在使用这个正则表达式来扫描标识符名称:
[a-zA-Z][a-z \tA-Z0-9_-]*[a-zA-Z0-9]
标识符名称在输入文件中由逗号分隔,并由公式中的运算符/特殊字符包围,程序可以很好地处理它们。在标识符名称中包含空格本身并不是问题。如果可以选择,我不会允许空格,但是输入文件是由另一个程序生成的,所以我无法更改。
这个正则表达式可以正常工作,但是它不允许使用我想要的单个字符标识符。
基本上,我需要一个正则表达式来匹配单个字符、字符之间带有可选空格的字母数字字符串,并且不匹配任何前导或尾随空格。
希望我的措辞足够清晰,您可以理解。
谢谢!
【问题讨论】:
-
试试
[a-zA-Z]([a-z \tA-Z0-9_-]*[a-zA-Z0-9])?,它将使[a-z \tA-Z0-9_-]*[a-zA-Z0-9]部分成为可选的。 -
我们可以看到需要匹配的示例吗?我假设任何以逗号分隔的内容?
-
@stribizhev 是的,这行得通,谢谢 :)
-
@penne12 不,它们在公式文件中不是逗号分隔的,正则表达式也需要处理。 stribizhev 已经想通了
标签: regex