我目前想做的就是判断一个str是否可以被认为是有效的MATLAB index。
最好的方法是直接运行,然后看运行结果或报错类型,但是我不打算在不知道
是什么类型的东西之前运行它,所以可以预先parse一下,简单判断是否
“长得跟有效的MATLAB index像”,而语法上可能有问题也可以。
也就是,如果有人写了这个,我不管了:
:2
-1
2,3:4
但是,我希望里面的东西至少不是奇怪的,这样试着eval的时候不会有内在的
问题。所以打算用正则表达式看看字符串是不是由有效的index集组成,所以
就把有效的东东放到 [] 里面,包括数字0-9,运算符+-*/^,各种括号,
分隔符\s;:,以及让人头疼的end和'
问题是:如何让end作为像单个字符一样作为[]集合中的一个元素而存在?
另,'的匹配似乎也很蛋疼,因为MATLAB中’是有特殊意义的,不过我在
StackOverflow找到了这个可以用\''来匹配。至于end组合成一个atom,我
就不知道了。
minux (新年新愿望~) 在 ta 的帖子中提到:
我非常确定 str 不是正则语言,所以严格意义上的正则表达式
是不可能识别的。
不过鉴于现在被称做“正则表达式”的语言其实并不是严格意义
上的正则表达式,而是一个没有严格定义的超集,且没有严谨的
定义(Perl 正则表达式可以识别上下文有关语言……)所以我
不知道“正则表达式”能不能识别。
你到底要干嘛?