我想匹配字符串最后部分的金额。有些金额以千为单位,例如 1,200.00,有些则只有几百,例如 450.95。字符串看起来像这样“March6March7Globe-Gmovies3dTaguigCity320.00”。
一旦匹配,我只想用匹配的值替换整个字符串。例如
March6March7Globe-Gmovies3dTaguigCity320.00
March6March7Globe-Gmovies3dTaguigCity1,320.00
变成
320.00
1,320.00
为什么我的模式只匹配千位,而不匹配百位?谢谢。
这是我的模式:
(.*)(\d{1}?\,?\d{3}\.\d{2})
答案1
请尝试:(.*?)((\d,)?\d{3}\.\d{2})
此处,(*.?)
类似于(.*)
,但最短(最短匹配字符串)。逗号不必转义。
答案2
- 说 毫无意义
\d{1}?
。如果您想要匹配一位数字,或者不匹配,只需说 即可\d?
。 - 因此您可以使用
(.*)(\d?\,?\d{3}\.\d{2})
。但这将匹配2019
中的。(如果您曾经收到过类似这样的格式错误的输入,City2019.00
它也会匹配,243.56
中的。)您想要匹配 或 — 您要么有,要么没有。因此请尝试,这将生成(即)一个组并将 应用于它。City,234.56
NNN.NN
N,NNN.NN
N,
(.*)((\d\,)?\d{3}\.\d{2})
\d\,
N,
?