我有一種情況,即必須從表達式字符串中選擇變量,如下所示。用於從表達式中選擇操作數的Java正則表達式
name = 'Bruce Wayne' ||TrackId = 12 || age =9 &&sample = 7 || thisistoolong = 'asda'
我試過模式
"(([\\d\\s\\S&&[^\\&\\|]]+)=([\\d\\s\\S&&[^\\&\\|]]+))"
,但它似乎並沒有掃描整個字符串。
我該如何改進我的模式,以便它可以從上面的字符串中選擇'name','TrackId','age','sample'和'thisistoolong'(作爲組)。
我知道我可以使用String.split()和/或可能遞歸一個較小的模式,但我認爲如果我只是使用正則表達式來完成工作,性能會更好。 (也是一個更清潔的代碼)
編輯:thisistoolong可能是一個包含Javascript有效值的Javascript中的常規變量名稱。感謝Andreas指出邊緣情況,在變量值中可以包含'||'和'& &'。參考波希米亞的答案,我得到了使用Pattern.split()的想法,以便我可以使用預編譯的正則表達式。
更容易使用'yourString.split(「||」)'並回避一個更小的模式。 – ifly6
['\ w + \ s * = \ s *([\ w'] +)'](https://regex101.com/r/lP9rL1/1)? – Jan
ifly6 - 我同意這個簡單的部分,但我現在遠離遞歸。如果這沒有幫助,我可能會回到這個問題上。 – NishM