正则表达式:提取数字,逗号之前,美元符号之后,百分比之前



试图保持简单,但我想我现在使正则表达式复杂化:

基本上,我想从字符串中删除所有数字 - 但考虑到可能有逗号或小数。

例子:

$13 -> 13
$13.95 -> 13
$1,300 -> 1300
$ 13 -> 13
Only 3 left -> 3
34 sold -> 34
34% -> 34
(45%) -> 45
($14) -> 14
£13 -> 13 (unicode u00A3)

python中的当前正则表达式:

re.match(ur"$?u00A3?(?:s+)?((d+),?(d+)?)%?(?:.[0-9]*)?", value)

非正则表达式的解决方案呢?

>>> s = '$1,300'
>>> ''.join([x for x in s if x.isdigit()])
'1300'

这应该适用于您的所有示例,除了我需要澄清推理的$13.95 -> 13。 如果您需要识别负数,浮点数,科学记数法等,则必须对其进行调整。

适用于

每种情况。对.的事情进行了一些回顾

>>> u''.join(re.findall(ur'(?<!.|d)(d+)', '$13.95'))
'13'

这个正则表达式应该完美匹配所有内容:

'$?([0-9,]+)[.%]?'

字面意思:

  • 可以有一个美元符号
  • 获取那里的所有数字和逗号[0-9,]
  • 如果没有更多数字,则停止,则显示.%

最新更新