我目前想做的就是判斷一個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?正則表達式可以識別上下文有關語言……)所以我
不知道“正則表達式”能不能識別。
你到底要干嘛?