2017-05-04 71 views
0

我一直在嘗試這2個小時左右。我無法得到解決方案。這是我的問題。正則表達式匹配所有特定的字符串或至少一個

測試字符串:

abc.1.2.4.6.8.10.9.8.7.10.12345 = WORDS: "ABC|1A|CDE-FGH|password:FSSAD234SD2|cgap:234-34/23/23" 

正則表達式:

9\.8\.7\.10\.(\d+) = (?:WORDS:)?"[^"]*(?:password:([A-Za-z0-9\.\-]+)) 

這將匹配12345和密碼字符串FSSAD234SD2

但是有時我不會得到密碼字符串,所以測試的字符串將如下,

abc.1.3.5.7.9.11.9.8.7.10.12345 = "" 

,所以我想至少匹配12345

在線正則表達式URL:

https://regex101.com/r/kQ3wT5/12 - 做工精細。

https://regex101.com/r/kQ3wT5/13 - 不工作。

請幫我解決這個問題。

+0

使非捕獲組可選。 –

回答

2

這個正則表達式使得密碼部分是可選的。並像你一樣在小組中捕獲。

正則表達式:\.(\d+)\s*=(?:.*?password:([^|]*))?

Regex101 Demo

+0

謝謝Rahul ... :)第二個沒有捕獲密碼字符串。 – Raja

+1

去第一個。 – Rahul

2

我想出了這個正則表達式:

'^(?:\w+\.)*(\d+) = (?:WORDS:)?"(?:.*\|password:([^\|]*).*)?"$' 

如果你需要的精度,只問!

相關問題