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

2024-10-06 14:34:00 发布

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

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

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

表达式:

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

文本:

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数据类型),然后去掉","")"或任何其他字符。你知道吗

我是regex的初学者,不确定是否需要+,但是在检查pythex在线编辑器时,我发现它得到了正确的结果。你知道吗

请帮我确定我哪里出错了。你知道吗


Tags: 文本renoneid表达式标识符find可能性
2条回答

标志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'>

尝试:

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

相关问题 更多 >