本文主要是介绍look-behind requires fixed-width pattern_正则表达式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题:例如我想要匹配一段文本中,字符“a”在“小猫”的前面,中间有可能间隔好几个字符,也有可能直接相邻。结果只返回“小猫”。
import re
text = "这是一只非常可爱的a的的小猫."
pattern = r"(?<=a*)小猫"
result = re.findall(pattern, text)
print(result)
如果这么写,会报错:look-behind requires fixed-width pattern
> 原因:正则引擎要求查找后顾表达式中的模式必须具有固定宽度,也就是说不能用星号,因为他可代替好几个字符。如果将星号改成“的的”,是可以匹配到小猫的
解决方案: 用Python的regex库而非内置的re库。
import regex
text = "这是一只非常可爱的a的的小猫."
pattern = r"(?<=a*)小猫"
result = regex.findall(pattern, text)
print(result)
结果:
['小猫']
这篇关于look-behind requires fixed-width pattern_正则表达式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!