2017-05-03 443 views
2

我的問題與我的正則表達式字符串。我有一個字符串的兩個組合如下,正則表達式匹配兩個單詞或至少一個

2.3.8.2.2.1.2.3.4.12345 = WORDS: "String to capture" 
2.3.8.2.2.1.2.3.4.12345 = "" 

正則表達式:

1\.2\.3\.4\.(\d+) = WORDS: (?|"([^"]*)|([^:]*)) 

https://regex101.com/r/kQ3wT5/10 - 匹配

https://regex101.com/r/kQ3wT5/9 - 不匹配

此正則表達式只匹配了第一串和不是第二個我有空字符串的地方。所以正則表達式必須匹配這兩種情況。還有一件事我真的不想去與「全球」比賽。

請幫我解決這個問題。

+1

您需要['使(?:WORDS:)?'可選](https://regex101.com/r/xl5VOT/1)。 –

+0

你是否展示了你會遇到的所有可能的字符串?那麼這是爲了匹配'[^:] *'。順便說一句,如果有機會,'(?|「([^」] *)|([^:] *))'將匹配_nothing_。 '我真的不想和'全局'匹配'在這裏沒有涉及,除非你有一個單一的字符串,其中的所有數據。 – sln

+0

@WiktorStribiżew非常感謝。請把它放在回答部分,以便我可以接受。 – Raja

回答

1

你需要通過與可選非捕獲組圍繞它做WORDS:<space>可選:

1\.2\.3\.4\.(\d+) = (?:WORDS:)?(?|"([^"]*)|([^:]*)) 

regex demo

(?:WORDS:)?匹配WORDS:子字符串的1或0個序列(由於?量詞)後跟一個空格。

相關問題