你可以嘗試一種簡單而快速的解決方案
編輯
一些提示:
我知道你是不是驗證簡單的數學表達式,但在美化之前這樣做不會有什麼壞處。
無論哪種方式,你應該remove all whitespace
提前
查找\s+
替換nothing
爲了縮小求和符號,你可以這樣做:
查找(?:--)+|\++
替換+
查找[+-]*-+*
替換-
司和權力符號的含義會因實施而有所不同n,
並且將它們濃縮是不可取的,並且更好地僅僅驗證表單。
驗證是更爲複雜的專長,因括號,
和 及其餘額的含義而複雜化。那是另一個話題。
儘管應該做一個最小字符驗證。
字符串必須至少與^[+\-*/^%()\d]+$
匹配。
在選擇性地執行上述操作之後,在其上運行美化程序。
https://regex101.com/r/NUj036/2
查找((?:(?<=[+\-*/^%()])-)?\d+(?!\d)|[+\-*/^%()])(?!$))
替換'$1 '
解釋
( # (1 start)
(?: # Allow negation if symbol is behind it
(?<= [+\-*/^%()])
-
)?
\d+ # Many digits
(?! \d) # - don't allow digits ahead
| # or,
[+\-*/^%()] # One of these operators
) # (1 end)
(?! $) # Don't match if at end of string
來源
2017-06-04 21:36:08
sln
嘗試['\ C |(= \ W?)'(<= \ W?)](HTTPS: //regex101.com/r/NQvCxA/2)並用空格替換。這需要一個執行多個分區和替換的方法(如PHP中的'preg_replace')。 –
@WiktorStribiżew你是我見過的最有天賦的正則表達式模式編寫者之一。你爲什麼不把你的答案發布成像SO這樣的答案? https://meta.stackexchange.com/questions/230676/hey-you-yeah-you-post-your-answers-as-answers-not-comments – mickmackusa
@mickmackusa因爲它和卡西米爾的回答一樣。我們幾乎在同一時間發佈,爲什麼重複? –