python 正则表达式 匹配多行聊天记录的问题。
发布网友
发布时间:2022-04-22 04:06
我来回答
共3个回答
热心网友
时间:2022-04-18 15:55
如果你所指得[任意文字]的意思是1个或1个以上文字得话
你可以试试下面得语句
p = re.compile(u'.*想知道.+\n.+也想知道.+')
否则你只需要将里面得"+"改为"*"就可以匹配0得情况
也就是下面得语句
p = re.compile(u'.*想知道.*\n.*也想知道.*')
测试代码如下:
>>>a = u"""我想知道。
..... 我也想知道。"""
>>>p.search(a)
>>><_sre.SRE_Match object at 0x1014d5100>
看了你的问题补充,如果你想要查找出字符串中最后匹配的子字符串的话,我目前没想到比较好的办法。
如果一定要用正则的话你可以考虑采用遍历的方式,也就是匹配所有不含abc的情况。
比如说^a, ^b, ^c, ab^c, a^bc....等等等等。不过这样以来正则表达式会显得过于复杂,而且扩展行几乎为0。
如果可以不用正则,那python本身的库就能够实现(可能你嫌处理语句过多或考虑到时间问题而不想用),而且逻辑也较为简单(我觉得是这样)。python的string类中自带有find()和rfind()方法再加上split()方法,合理使用的话应该能找出所有的匹配子字符串。追问好,谢谢大大了。如果没有别的更好的答案了的话,我月考完回来就给您采纳。
热心网友
时间:2022-04-18 17:13
如果你是要处理网页的话,不用费力使用正则表达式
PYTHON有专门处理HTML和XML的库(虽然用的就是正则表达式RE模块)
用sgmllib就可以处理HTML
如果是要提取连接地址的话,用urllister
例 8.7. 使用 urllister.py
>>> import urllib, urllister
>>> usock = urllib.urlopen("")
>>> parser = urllister.URLLister()
>>> parser.feed(usock.read())
>>> usock.close()
>>> parser.close()
>>> for url in parser.urls: print url
toc/index.html
#download
#languages
toc/index.html
appendix/history.html
download/diveintopython-html-5.0.zip
download/diveintopython-pdf-5.0.zip
download/diveintopython-word-5.0.zip
download/diveintopython-text-5.0.zip
download/diveintopython-html-flat-5.0.zip
download/diveintopython-xml-5.0.zip
download/diveintopython-common-5.0.zip
推荐你看看《PYTHON入门到精通》的HTML处理这一章
PYTHON的入门教材一般都是先看《PYTHON简明教程》再看《PYTHON入门到精通》然后基本就登堂入室了,看看新闻组就好了追问我是搞人工智能的啊大哥。。哪儿都不挨哪儿啊……
首先:如何界定最后一个“name:”出现的位置?
或者,这么说吧:[^(a)]+能够匹配一个不含单个字母a的子串,那么如果是”一个不含单词abc的字串“,要如何匹配呢?
热心网友
时间:2022-04-18 18:48
>>> text='''我想知道。
... 我也想知道。
... '''
>>> obj_re = re.compile(r"(.*?)想知道(.*?)\r?\n(.*?)也想知道([\s\S]*?)$")
>>> print obj_re.search(text).group()
我想知道。
我也想知道。
>>> text2 = '''
... asdfasdf
... tes239*#*&*&
... 他想知道地球为什么是圆的,
... 他也想知道房价为什么这么高。
... '''
>>> print obj_re.search(text2).group()
他想知道地球为什么是圆的,
他也想知道房价为什么这么高。
试试这个吧