我想爲這個BNF語法寫一個preg_match函數。Preg_match不允許字母和給定正則表達式允許0-3的數字
EXP ::= EXP + TERM | EXP - TERM | TERM
TERM ::= TERM * FACTOR | TERM/FACTOR | FACTOR
FACTOR ::= (EXP) | DIGIT
DIGIT ::= 0 | 1 | 2 | 3
我不想讓任何字母和數字的任何> 3和字符串應該用$ sign.I結束嘗試了這些模式,但它不能正常工作。我不明白我犯了什麼錯誤。
$pattern = "|[0-3\+\-()*/]+\\$$|";
$pattern = "|[^A-Za-z][0-3\+\-()*/]+\\$$|";
被修改:
試過這也
$圖案= 「|^[0-3 + - ()* /] + \ $$ |」;
但這允許 + 1 $,我不想允許任何數字> 3。
請問有人可以幫助我嗎?
謝謝。
'\\ $$'將會被翻譯出來。是一個字面反斜槓,一個$,然後是一個字符串結尾的錨?也許你只需要'\ $$'來獲得一個字面值$和一個字符串尾部的錨點。 –
@MarcB:他必須經歷這個醜陋,導致該模式的雙引號。 '\ $$'會給他兩個字符串的結尾。 (提示@user:不要雙引號RE,它會讓事情變得更加痛苦。) – cHao
啊是的。真的夠了。 –