2016-10-22 50 views
1

我有一個正則表達式正則表達式的鍵值對

(\w+)\s*:((?:\w+[-+*%])*?\w+)$ 

比賽鍵值對這樣的 -

鍵:值

KEY2:數值2

但正則表達式matc^h失敗如果該鍵和值都像這些引號內 -

「關鍵」:價值

「KEY2」: 「值2」

可以做什麼修改使正則表達式匹配鍵和引號內的值也?

+0

'鍵和值在pamentalhesis' =>你的意思是引用正確嗎? – anubhava

+0

是的。我的意思是引用。 –

+0

你說「括號內」(不是「pativehesis」),但你給的例子顯示在雙引號內。無論如何,請不要用正則表達式區分對象字面值語法。你爲什麼要這麼做?這些字符串從哪裏來,你想用它們做什麼? – 2016-10-22 07:21:25

回答

2

你可以在這樣的key-value雙兩側使用可選報價:

/("?)\b(\w+)\1\s*:\s*("?)((?:\w+[-+*%])*?\w+)\b\3/g 

RegEx Demo

採取注組("?)的是捕捉一個空字符串或雙引號。另一方面,我們使用該組的後引用\1來關閉報價。

+1

我已經回答了許多次逃脫報價的問題,但這個問題沒有要求,我也沒有過度設計解決方案,除非它是一個要求。 – anubhava

+0

OP嘗試使用正則表達式並用正則表達式標記它。如果您願意,請隨時發佈答案。 – anubhava

+0

你在浪費你不必要的爭論。根據海報的理解,SO不會阻止任何人發佈解決方案。 – anubhava