正则表达式以查找最长的匹配项


regex to find the longest of matches

我有以下正则表达式:

('b[1-9]+[.,][0-9]+[.,]?[0-9]+)#u

尝试匹配并提取字符串 185,000 in:

ABBY TOP Colour : POLKA BLACK Weight : 0,18 Price : 185,000 Material : Kaos Semi-Fleece Size : Panjang / Length: 55 cm (depan), 72 (belakang)

和字符串 20000 在:

"Jualan @20.000 "

但是,这与 20.000 不匹配,它只是匹配 null。我还希望它匹配数字中间和最后部分的 3 位数字,所以我将其更改为:

('b[1-9]+[.,][0-9]{3}[.,]?[0-9]{3})#u

这是为了防止正则表达式匹配:

20,00

并且只匹配20,00020,000,00020.000.000

有什么想法吗?

正确的正则表达式应该是:

(?<![.,])'b([1-9]'d*(?:[.,]'d{3})*)'b(?![.,])

即数字1-9后跟 0 位或多个数字,然后是句点或逗号。

正则表达式演示

怎么样只是:

'd+(?:[,.]'d{3})+

一个很好的简单正则表达式。