我的正则表达式字符串有问题。我有两种字符串组合,如下所示,
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 - 不匹配
此正则表达式仅匹配第一个字符串,而不是第二个字符串匹配的空字符串。所以正则表达式必须匹配两种情况。还有一件事,我真的不想和“全球”比赛一起去。
请帮我解决这个问题。
答案 0 :(得分:1)
您需要将WORDS:<space>
包含在可选非捕获组中,以使其成为可选项:
1\.2\.3\.4\.(\d+) = (?:WORDS: )?(?|"([^"]*)|([^:]*))
请参阅regex demo。
(?:WORDS: )?
匹配?
子串的1或0序列(由于WORDS:
量词),后跟空格。