Maison > Questions et réponses > le corps du texte
为了捕获在日期和末尾的“部分”之间内容。 日期有包含日 和 不包含两种格式。
不包含的格式下后续内容不会以数字开头。
例子:
10月11日测试内容1部分 10月11日1234测试内容2部分 //待捕获的内容可以数字开头 8月31测试内容1部分 //待捕获的内容不会以数字开头
我写的正则为(?<=\d{1,2}月\d{2}日?)\w+(?=部分)
获得的结果为
日测试内容1 //错误 多个日日1234测试内容2 //错误 多个日测试内容1
(?<=\d{1,2}月\d{2}日|\d{1,2}月\d{2})\w+(?=部分) 这种写法结果一样
(?<=\d{1,2}月\d{2}日)\w+(?=部分) 这种写法只能捕获前两个
请教正确写法
还有就是 如何在python中写出这段正则,
re.compile(r"(?<=d{1,2}'月'd{2}'日'?)w+(?='部分)")
提示raise error("look-behind requires fixed-width pattern")
三叔2016-11-10 14:04:30
python 的正则后向预查不支持变长模式,只能匹配固定长度。 用分组匹配就好了,效率比较高。
python3
>>> t=''' 10月11日测试内容1部分 10月11日1234测试内容2部分 //待捕获的内容可以数字开头 8月31测试内容1部分 //待捕获的内容不会以数字开头 ''' >>> import re >>> ptn2=re.compile(r'\d{1,2}月\d{2}日?(\w+)(?=部分)') >>> ptn2.findall(t) ['测试内容1', '1234测试内容2', '测试内容1'] >>>