使用python正则表达式找不到“None”

时间:2013-12-06 12:35:18

标签: python regex

我正在编写一个表达式,它将在python中搜索某些文本。

我尝试了在线pythex编辑器,但是python中的相同表达式不起作用

表达

find_id = re.compile(r'^identifier\s*=\s*(\[\s*.*\s*\]|[\d*]|"\w*"|None)+', re.M)

text

identifier = None
identifier=None
identifier = None ,
identifier = None,
identifier = None  ,
identifier = None)
identifier = None ,)
identifier  = 35)
identifier  = ["U1", "U2", "U3"])
identifier  = "some_String",
identifier  = [112, 113, 114])
identifier  = [212, 213, 214] )
identifier  = [312, 313, 314], )
identifier  = [412, 413, 414] , )

上面提到的标识符行中有许多不同的可能性。它可以是上述任何一种可能性。 在解析时,我只需要标识符值(python数据类型),删除","")" 或任何其他字符。

我是正则表达式的初学者,不确定我是否需要+,但在检查pythex在线编辑器时,我发现它得到了正确的结果。

请帮我确定我在哪里犯了错误。

2 个答案:

答案 0 :(得分:1)

标志re.MULTILINE是必要的

import re

s = '''one line
identifier = None ,) and
another line'''

pat = '^identifier\s*=\s*(None)+'


m = re.search(pat,s)
try:
    gr = m.group(1)
    print gr,type(gr)
except:
    print '--No match has been found--'

print '---------------------------'

m = re.search(pat,s,re.M)
try:
    gr = m.group(1)
    print gr,type(gr)
except:
    print '--No match has been found--'

结果

--No match has been found--
---------------------------
None <type 'str'>

答案 1 :(得分:-1)

尝试:

^identifier\s*=\s*(None).*$