【发布时间】:2018-03-08 05:07:03
【问题描述】:
我需要在我试图解析的一些表达式中区分变量名和非变量名。变量名以冒号开头,可以有(但不能以)数字,并有下划线。所以有效的变量名是:
:x :_x :x2 :alpha_x // etc
然后我必须在表达式中挑选出不以冒号开头的其他单词。所以在下面的表达式中:
:result = median(:x,:y,:z)
变量是 :result、:x、:y 和 :z,而其他非变量词是中位数。
我选择变量名的正则表达式是(这可行):
:[a-zA-Z_]{1}[a-zA-Z0-9_]*
但我无法弄清楚如何获得非可变词。我的正则表达式是:
(?<!:)([a-zA-Z_]{1}[a-zA-Z0-9_]*)
问题是,匹配只排除 : 之后的第一个字符,如下所示:
【问题讨论】:
-
那么你的非可变词之前需要一个非 a-z 是真的吗?所以
: this应该匹配this?