我正在尝试使用正则表达式来匹配字符串的一部分而且我不确定我在哪里弄乱语法。
string = 'Item key: 0.1234 xY ( -2.6 GMc)'
match = re.search(r'(?<=\( )([^ GMc]*)', string)
print(match)
我想要的价值是-2.6(没有''),但我实际得到的是 &lt; _sre.SRE_Match对象; span =(22,26),match =' - 2.6'&gt;
我知道re.findall()例如会创建一个匹配列表的值列表,即使列表中有一个项目,但我尝试使用搜索并向前/向后搜索。< / p>
我在win32上使用python 3.4.3
答案 0 :(得分:0)
你需要使用积极的先行断言。正则表达式中的[^ GMc]*
匹配任何字符,但不匹配空格或G
或M
或c
,零次或多次。也就是说,一旦找到字符类中存在的任何一个模式,它就会停止匹配。不是整个GMc
。
>>> import re
>>> string = 'Item key: 0.1234 xY ( -2.6 GMc)'
>>> re.search(r'(?<=\( ).*?(?= GMc)', string).group()
'-2.6'
(?<=\( )
会立即查看space(
并将.*?
任意字符匹配零次或多次,直到找到字符串<space>GMc
。