Python正则表达式从unicode检索数字、点和破折号

Python正则表达式从unicode检索数字、点和破折号,python,regex,python-2.7,Python,Regex,Python 2.7,我有以下数据:u'US$1.37-2.65' 我想检索1.37-2.65 重要: US$部分不是静态的,它可能会根据所选货币的类型而变化。其他例子: 34.27 - 47.92 грн. € 1.05 - 1.47 NZ$ 16.57 - 18.22 换句话说,正则表达式只应检索: 数字 数字之间的点 数字之间的短跑 您只需在“$”字符上拆分,然后使用第二个列表条目: >>> u'US $1.37 - 2.65'.split("$")[1] u'1.37-2.65 如果出

我有以下数据:
u'US$1.37-2.65'

我想检索
1.37-2.65

重要
US$
部分不是静态的,它可能会根据所选货币的类型而变化。其他例子:

34.27 - 47.92 грн.
€ 1.05 - 1.47
NZ$ 16.57 - 18.22
换句话说,正则表达式只应检索:

  • 数字
  • 数字之间的点
  • 数字之间的短跑
您只需在“$”字符上拆分,然后使用第二个列表条目:

>>> u'US $1.37 - 2.65'.split("$")[1]
u'1.37-2.65
如果出于某种原因需要使用正则表达式,则以下操作应有效:

>>> import re
>>> re.findall('^.* \$([0-9 -.]+)$', 'US $1.37 - 2.65')[0].replace(' ', '')
'1.37-2.65'
最终编辑:以下模式将匹配原始帖子编辑中添加的任何示例:

>>> re.findall('^(.* [^0-9]?)?([0-9.,]+ - [0-9.,]+)( .*)?$', data)[0][1].replace(' ', '')


好的,找到了适用于所有货币的方法

“”.join(关于findall('[0-9.-]',text)).rstrip(“.”

其中
text
适用于以下任何一种:

34.27 - 47.92 грн.
€ 1.05 - 1.47
NZ$ 16.57 - 18.22

data.split(“$”)[1]
数据的一般格式是什么?
US$
部分不是静态的,它可能会根据所选货币的类型而变化。前面的“u”字符只是表示它是以unicode表示的,因为输入字符串是unicode。它在逻辑上相当于一个ASCII字符串。我知道这一点,但在将其作为数据解析时,它不应该作为所需的结果出现在那里。我只是在我的问题中添加了一些更多的信息。字符串的
US$
部分可能会根据货币选择而更改。@FTM然后更改正则表达式模式以说明这一点:
re.findall('^.......([0-9.]+-[0-9.]+)$,'US$1.37-2.65'[0]。替换(',)
欢迎使用StackOverflow!您的答案需要更多地解释代码是如何解决问题的。
aa = 'US $1.37 - 2.65'
index = aa.find('$')
newstring = aa[index+1:]
print(newstring)
34.27 - 47.92 грн.
€ 1.05 - 1.47
NZ$ 16.57 - 18.22