在regex Python中捕获$

2024-09-28 21:28:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用一行字来表示美元的数额:

示例: blah blah blah (blah $23.32 blah) blah blac (blah) 我想抓住“23.32美元”

这就是我正在使用的:r'?([\$][.*]+)'

我告诉它找一个(…)的例子? 然后我告诉它找到以“$”开头的东西和后面的任何字符(这样我也可以得到小数点)。你知道吗

但是,我得到一个错误error: nothing to repeat


Tags: to示例错误error字符例子blahrepeat
3条回答

开头的问号是nothing to repeat错误的原因。你知道吗

>>> import re
>>> re.compile(r'?')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/mj/Development/venvs/stackoverflow-2.7/lib/python2.7/re.py", line 190, in compile
    return _compile(pattern, flags)
  File "/Users/mj/Development/venvs/stackoverflow-2.7/lib/python2.7/re.py", line 242, in _compile
    raise error, v # invalid expression
sre_constants.error: nothing to repeat

匹配美元加号和点:

r'\$[\d.]+'

演示:

>>> re.search(r'\$[\d.]+', 'blah blah blah (blah $23.32 blah) blah blac (blah)').group()
'$23.32'

嗯,根据http://docs.python.org/2/library/re.html[.*]+会匹配.*..**....**.*.*.等等。。。因为特殊字符在集合中失去了意义。改用[.\d]+[.0-9]+。你知道吗

你应该改进正则表达式的基础知识。错误是由于?在开始的时候。它是一个量词,在这个量词之前什么都没有。使用*和+也没有多大意义。如果不知道您的确切需求,就很难提出更好的解决方案,因为您的regex有太多的问题。你知道吗

相关问题 更多 >