python正则表达式发现者

时间:2015-09-20 23:09:39

标签: python regex

我对re有疑问,我试着在纪录片上找回答,但我想我是为了新手。

我有这样的字符串

string = "id=186 s_id=0  channel_name=[cspacer0]---BlaBla--- number=2"

我希望在' ='之后检索所有结果。所以我用了

re.finditer("=[\w]*", string)

我的结果如下

  • 186
  • 0
  • 空格< - 应该有[cspacer0] - BlaBla -
  • 2

我的模式应该如何获得channel_name?

1 个答案:

答案 0 :(得分:1)

\w令牌只匹配单词字符,以允许我使用\S(任何非空格字符)的元字符。此外,您可以使用finditer代替findall代替此任务:

>>> import re
>>> s = 'id=186 s_id=0  channel_name=[cspacer0]---BlaBla--- number=2'
>>> re.findall(r'=(\S+)', s)
['186', '0', '[cspacer0]---BlaBla---', '2']

修改

  

原始字符串看起来像这样,我希望从=跳过=okidx=0

开始
>>> s = 'error idx=0 msg=ok id=186 s_id=0 channel_name=[cspacer0]---BlaBla--- number=2'
>>> re.findall(r'(?<!idx)=(?!ok)(\S+)', s)
['186', '0', '[cspacer0]---BlaBla---', '2']