Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python正则表达式没有';行不通_Python_Regex - Fatal编程技术网

python正则表达式没有';行不通

python正则表达式没有';行不通,python,regex,Python,Regex,我有这个android logcat的日志: 找不到从方法b.a引用的类android.app.Notification$Action$Builder 我试图用python中的正则表达式来提取android.app.Notification$Action$Builder和b.a 我使用以下代码: regexp = '\'([\w\d\.\$\:\-\[\]\<\>]+).*\s([\w\d\.\$\:\-\[\]\<\>]+)' match = re.match(r'%s

我有这个android logcat的日志:

找不到从方法b.a引用的类android.app.Notification$Action$Builder

我试图用python中的正则表达式来提取android.app.Notification$Action$Builder和b.a

我使用以下代码:

regexp = '\'([\w\d\.\$\:\-\[\]\<\>]+).*\s([\w\d\.\$\:\-\[\]\<\>]+)'
match = re.match(r'%s' % regexp, msg, re.M | re.I)
regexp='\'([\w\d\.\$\:\-\[\]\]+).\s([\w\d\.\$\:\-\[\]\]+)
match=re.match(r'%s'%regexp,msg,re.M | re.I)
我在线测试了正则表达式,它可以正常工作,但它在python中从未匹配过。有人能给我一些建议吗

谢谢

re.match()
仅在字符串开头匹配。请改用
re.search()
,请参阅

请注意,您似乎误解了原始字符串文字是什么<代码>r“%s”%string不会生成特殊的不同对象
r'..'
只是一个符号,它仍然会生成一个常规的字符串对象。将
r
放在原始字符串文字上(但如果使用双引号,则不需要引用包含的单引号):

演示:

>>重新导入
>>>regexp=r'class\s+((?:[\w\d\$\:\-\[\]\]+\)+[\w\d\$\:\-\[\]\]+.*方法([\w\d.\$\:\-\[\]\]+)
>>>msg=“找不到类android.app.Notification$Action$Builder,引用自方法b.a”
>>>检索(regexp、msg、re.M | re.I)
>>>检索(regexp,msg,re.M | re.I).groups()
('android.app.Notification$Action$Builder','b.a')

r'%s'%regexp
不会使正则表达式成为原始字符串文字。将
r
放在
regex=r'…'
字符串上。这并不重要。除此之外,
“%s”%some_string
是一种非感官复杂性。更喜欢直接使用
一些字符串。在您的情况下,首选
re.match(regexp,msg,re.M | re.I)
。我不确定您声称它在在线正则表达式测试仪中是如何工作的。
regexp = r"'([\w\d\.\$\:\-\[\]\<\>]+).*\s([\w\d\.\$\:\-\[\]\<\>]+)"
regexp = r'class\s+((?:[\w\d\$\:\-\[\]\<\>]+\.)+[\w\d\$\:\-\[\]\<\>]+).*method ([\w\d.\$\:\-\[\]\<\>]+)'
>>> import re
>>> regexp = r'class\s+((?:[\w\d\$\:\-\[\]\<\>]+\.)+[\w\d\$\:\-\[\]\<\>]+).*method ([\w\d.\$\:\-\[\]\<\>]+)'
>>> msg = "Could not find class android.app.Notification$Action$Builder, referenced from method b.a"
>>> re.search(regexp, msg, re.M | re.I)
<_sre.SRE_Match object at 0x1023072d8>
>>> re.search(regexp, msg, re.M | re.I).groups()
('android.app.Notification$Action$Builder', 'b.a')