正则表达式 - 仅当组存在时才捕获,如果不存在则忽略

Nic*_*nto 6 regex

我有这个正则表达式

(\w+)\s*\:\s*(\W\d+)
Run Code Online (Sandbox Code Playgroud)

设置为匹配类似的东西

"price: $200"
Run Code Online (Sandbox Code Playgroud)

我需要做什么来改变它,以便它匹配"price: $200""$200"(如果价格:部分不存在)

我试过

(?:(\w+)\s*\:\s*)*(\W\d+)
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为它给了我第一个空匹配

Ken*_*ent 5

怎么样:

(\w+\s*:\s*)?(\W\d+)
Run Code Online (Sandbox Code Playgroud)

?意味着该组将出现 1 次或 0 次。您可以添加自己的捕获组以方便数据获取。