gpt4 book ai didi

python - 如何使用正则表达式过滤字符串模式以在文本行中匹配?

转载 作者:行者123 更新时间:2023-12-01 06:04:38 25 4
gpt4 key购买 nike

我需要将给定文本中的正则表达式模式与 python 进行匹配。

正文为:

  """

2010 Toyota FJ Cruiser FJ CRUISER

Int. Color:

Ext. Color:

Black

Trans:

Automatic

VIN:

JTEZU4BF7AK009445


Stock:

122821B

DIFFERENTIALBLACK

Status:

Body Style:
SUV
Engine:
Gas V6 4.0L/241
Dealership: Universal Toyota



$29,988*
Price

View More Information


Compare?

"""

从这段文本中我需要提取“JTEZU4BF7AK009445”(长度为17)vin后的这个模式:可能

我用了这个模式

        vin_pattern = re.compile('([A-Z0-9]{17})')
vin = re.findall(vin_pattern,text)

["JTEZU4BF7AK009445","DIFFERENTIALBLACK"]

但是DIFFERENTIALBLACK不应匹配

我也使用了该模式

       price_pat = re.compile('(\$[0-9\,\.]+)')

匹配价格范围(“$”符号+值)

在这里,我需要仅在 VIN_PATTERN 的 50 个字符出现之前和之后检查此价格匹配模式。因为在某些情况下我有更多的价格值。所以,我需要过滤该 VIN 模式存在的 50 个字符之前和 50 个字符之后的文本

请问应该怎么做?

最佳答案

让我们首先通过将所有空格标准化为单个空格符号来稍微简化一下文本:

t2 = re.sub(r'[\n\t\ ]+', ' ', t)  # t is your original text

它使寻找 VIN 的任务变得更加容易:

re.findall('[A-Z]{3}[A-Z0-9]{10}[0-9]{4}', t2)
Out[2]: ['JTEZU4BF7AK009445']

然后你可以获取 VIN: 在字符串中的位置,并将 vin_position - 50, vin_position + 50 传递给 .findall 方法:

r2 = re.compile('(\$[0-9\,\.]+)')
r2.findall(t2, t2.find('VIN:') - 50, t2.find('VIN:') + 50)
Out[4]: []

在您的文本中,价格与 VIN 的距离超过 50 个字符,即您需要扩展此边界(100 个字符即可):

r2.findall(t2, t2.find('VIN:') - 100, t2.find('VIN:') + 100)
Out[5]: ['$29,988']

关于python - 如何使用正则表达式过滤字符串模式以在文本行中匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756334/

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