繁体   English   中英

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

[英]regex to find the longest of matches

我有以下正则表达式:

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

尝试在以下位置匹配并提取字符串185,000:

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})+

一个不错的简单正则表达式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM