gpt4 book ai didi

Python 非贪婪正则表达式与模式之间的匹配

转载 作者:行者123 更新时间:2023-11-28 20:42:33 24 4
gpt4 key购买 nike

好的,我知道这是一个很常见的问题。我搜索了又搜索,但找不到任何解决我问题的方法。

所以我有一些文本:

#u'15" approx. length from waist to hem, 26" waist#Measured from Small#Shell: 100% Polyester, Lining: 100% Polyester#Machine wash cold, tumble dry low#Imported'

这些基本上是由 # 分隔的行。我想获取包含 % 的行,它是:

#外壳:100% 涤纶,衬里:100% 涤纶#

所以我尝试搜索这个模式:

#.*%.*#

但这并不贪心,所以我尝试了:

#.*?%.*?#

在此之后我得到:

#u'15"从腰部到下摆的大约长度,26"腰围#从小号量起#外壳:100% 涤纶,衬里:100% 涤纶#

一开始还是不贪心。我错过了什么?

最佳答案

如果你只想要包含 % 的行,你可以这样做:

text = '15" approx. length from waist to hem, 26" waist#Measured from Small#Shell: 100% Polyester, Lining: 100% Polyester#Machine wash cold, tumble dry low#Imported'
for line in text.split('#'):
if '%' in line:
# it's the line, do something

您还可以使用列表理解:

text = '15" approx. length from waist to hem, 26" waist#Measured from Small#Shell: 100% Polyester, Lining: 100% Polyester#Machine wash cold, tumble dry low#Imported'
matches = [line for line in text.split('#') if '%' in line]

如果你真的想使用正则表达式,你可以这样做:

import re

text = '15" approx. length from waist to hem, 26" waist#Measured from Small#Shell: 100% Polyester, Lining: 100% Polyester#Machine wash cold, tumble dry low#Imported'
line_re = re.compile('#[^#]*%[^#]*#')
matches = line_re.findall(text)

解释使用的正则表达式:

'#[^#]*%[^#]*#'

我们正在寻找以 # 开头的内容,然后使用 [^#]* 我们希望尽可能多地匹配不是 # 的字符 尽可能多([^#]表示与#不同的任意字符,*表示重复),那么我们要匹配一个%,然后再次 [^#]*,整个匹配应以 # 结束。

关于Python 非贪婪正则表达式与模式之间的匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30376641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com