2016-03-29 35 views
1

什麼什麼的,我有以下的情況下,正則表達式可選選擇引號內

docId:1234 
docName:"Document" 
docDescription:"Document description" 

我想用正則表達式來提取上述案件的關鍵和價值。我生成了(.+?):\"(.*)\"。 group1 - > docName,group2 - >文檔

但是這隻適用於第二和第三種情況。 我試過類似(.+?):\"(.*)\"|(.*)。但他們給我提供了錯誤的結果。有人能解釋我在這裏做錯了嗎?

+1

['^([^:] *):$'(*)(https://開頭regex101.com/r/xB9xF1/1) – Tushar

+1

什麼是正則表達式風格/編程語言?你應該分組的替代品:['(。+?):(?:\「(。*)\」|(。*))'](https://regex101.com/r/zP3tI7/1)。但是可以有更好的解決方案。 –

+0

我相信你的簡單解決方案是使報價可選 - '(。+?):「?(。*)」?'。 (不需要引用正則表達式 - 它們可能需要被你的環境想象......) – ClasG

回答

1

你可以使用這個表達式可選的反向引用匹配:

([^:]+):("?)([^"]+)\2 

RegEx Demo

\2是冒號後面可選"反向引用。