gpt4 book ai didi

python - 正则表达式适用于 sublime 文本搜索,但不适用于 python 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 03:22:00 25 4
gpt4 key购买 nike

我想使用正则表达式搜索文件的内容。该文件的示例是:

3 General 24
3.1 CR IOT133 (ID: 194) 24
3.1.1 Issue 24
4 Integration 25
4.11 CR IOT025 (ID: 125) 25
10.27 CR IOT111 (ID: 176) 77

我想提取 IOTxxx 部分(因此在本例中为第 2、5 和 6 行)

我的脚本是:

import re
fhandle = open("CR_headers.txt")
inp = fhandle.read()
crnumlist = re.findall('^\d{1,2}\.\d{1,2} CR (IOT\d{3}).*$', inp)
print crnumlist

最后一条语句打印一个空列表。我也尝试从控制台运行它,但结果是一样的。

如果我使用带有输入的 sublime text 查找:^\d{1}\.\d{1} CR (IOT\d{3}).*$我可以获得匹配的行。

在 windows 7 盒子上使用 python 版本 2.7.10 和 sublime text 2

任何关于我做错的想法都将不胜感激。谢谢

最佳答案

您只需要包含多行修饰符并将您的正则表达式定义为原始字符串。当满足这两个条件时,您必须使用多行修饰符。

  • 每当在您的输入正则表达式中使用 anchor ^$ 时。
  • 并且当输入字符串包含多行时。

    crnumlist = re.findall(r'(?m)^\d{1,2}\.\d{1,2} CR (IOT\d{3}).*$', inp)

例子:

>>> s = '''3 General 24
3.1 CR IOT133 (ID: 194) 24
3.1.1 Issue 24
4 Integration 25
4.11 CR IOT025 (ID: 125) 25
10.27 CR IOT111 (ID: 176) 77'''
>>> re.findall(r'(?m)^\d{1,2}\.\d{1,2} CR (IOT\d{3}).*$', s)
['IOT133', 'IOT025', 'IOT111']
>>> re.findall(r'^\d{1,2}\.\d{1,2} CR (IOT\d{3}).*$', s)
[]

关于python - 正则表达式适用于 sublime 文本搜索,但不适用于 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34393972/

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