2016-03-29 28 views
1

içinde bir şey ya da bir şey seçmek Aşağıdaki durumlarda var, yukarıdaki durumlarda anahtarı ve değerini ayıklamak için normal ifadeler kullanabilirsiniz istiyorum Regex isteğe bağlı tırnak

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

.

Ben (.+?):\"(.*)\" oluşturuldu. group1 -> docName, group2 -> Document

Ancak bu yalnızca 2. ve 3. durumlarda çalıştı. (.+?):\"(.*)\"|(.*) gibi bir şey denedim. Ama bana yanlış sonuçları veriyorlar. Birisi burada neyi yanlış yaptığımı açıklayabilir.

+1

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

+1

Normal ifade/programlama dili nedir? Alternatifleri gruplandırmış olmalısınız: ['(. +?): (?: \" (. *) \ "| (. *))'] (Https://regex101.com/r/zP3tI7/1). Ancak daha iyi çözümler olabilir. –

+0

Sizin için basit bir çözüm, alıntıları isteğe bağlı yapmak gerektiğine inanıyorum - '(. +?):"? (. *) "?'. (Regex için alıntı yapılmasına gerek yoktur - sizin düşünceniz çevreye göre olması gerekir ...) – ClasG

cevap

1

Sen opsiyonel arka referans eşleme ile bu normal ifadeler kullanabilirsiniz:

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

RegEx Demo

\2 kolon sonra isteğe bağlı " için arka referanstır.