正则表达式适用于 sublime 文本搜索,但不适用于 python 脚本
Regexp works with sublime text search but not from python script
我想使用正则表达式搜索文件内容。该文件的示例是:
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
任何关于我做错的想法都将不胜感激。谢谢
您只需要包含多行修饰符并将您的正则表达式定义为原始字符串。当满足这两个条件时,您必须使用多行修饰符。
- 只要在您的输入正则表达式中使用锚
^
、$
。
当输入的字符串超过一行时
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)
[]
我想使用正则表达式搜索文件内容。该文件的示例是:
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
任何关于我做错的想法都将不胜感激。谢谢
您只需要包含多行修饰符并将您的正则表达式定义为原始字符串。当满足这两个条件时,您必须使用多行修饰符。
- 只要在您的输入正则表达式中使用锚
^
、$
。 当输入的字符串超过一行时
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)
[]