正则表达式匹配两个单词或至少一个

时间:2017-05-03 21:59:08

标签: regex perl

我的正则表达式字符串有问题。我有两种字符串组合,如下所示,

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 个答案:

答案 0 :(得分:1)

您需要将WORDS:<space>包含在可选非捕获组中,以使其成为可选项:

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

请参阅regex demo

(?:WORDS: )?匹配?子串的1或0序列(由于WORDS:量词),后跟空格。