正则表达式匹配数字有轻微问题

Ran*_*ray 2 regex numbers

我的问题是从货币列表列表中提取数字.

我的测试数据就是这样的

$100.00
AUD 2012.00
Rs. 234.0 ASD
133 USD
Another thing 1233S.E122
Blah Blah 1.23 
SG$ 013.3
23.03 Something
Something T1233S.122S Else
Whatever 2
Run Code Online (Sandbox Code Playgroud)

我想出的正则表达式是

(\d+)\.?(\d+)?
Run Code Online (Sandbox Code Playgroud)

基本上,一个数字后跟一个可选的点和另一个可选的数字.

因此,虽然这很好,但它比我想要的更有效.举个例子,它匹配

1233和122 in 1233S.E122和相同T1233S.122S

我理解,因为我使用全局标志运行它,所有数字都匹配.

如何使它与开头,中间或结尾包含非数字的那些不匹配?

由于我是RegEx的初学者,请善意地给出您的答案的简要说明.

ale*_*lex 5

使用一些单词边界......

\b\d+(?:\.\d+)?\b
Run Code Online (Sandbox Code Playgroud)

这将匹配带有字边界的可选小数位的数字.

RegExr.

我也整理了你的正则表达式,假设你想要匹配整数而不是单独的小数.