将标识符与空格

时间:2015-11-25 22:16:12

标签: regex

我正在使用flex / bison解析线性时态逻辑公式的解析器。我也使用相同的扫描程序来解析这些公式的输入。

我正在使用此正则表达式扫描标识符名称:

[a-zA-Z][a-z \tA-Z0-9_-]*[a-zA-Z0-9]

标识符名称由输入文件中的逗号分隔,并由公式中的运算符/特殊字符包围,程序处理它们很好。在标识符名称中包含空格本身并不是问题。如果我有选择的话,我不会允许空格,但是输入文件是由另一个程序生成的,所以我不能改变它。

这个正则表达式工作正常,但它不允许单个字符标识符,我想拥有。

基本上,我需要一个匹配单个字符的正则表达式,字母之间带有可选空格的字母数字字符串,并且不匹配任何前导或尾随空格。

希望我的措辞足够清楚,让你明白。

谢谢!

2 个答案:

答案 0 :(得分:1)

尝试

[^,]+

它匹配任何非逗号字符,1次或多次。你可以随时修剪空白。

说明:

(来自regexper.com

Regexper Image

答案 1 :(得分:0)

使用

[a-zA-Z]([a-z \tA-Z0-9_-]*[a-zA-Z0-9])?

(...)?会使[a-z \tA-Z0-9_-]*[a-zA-Z0-9]部分成为可选项,因为?贪婪量词与上一个子模式的1或0次匹配相匹配。

请参阅regex demo