Regexp可以使用升华文本搜索,但不能使用python脚本
我想用正则表达式搜索文件的内容。该文件的一个示例是:Regexp可以使用升华文本搜索,但不能使用python脚本,python,regex,sublimetext2,Python,Regex,Sublimetext2,我想用正则表达式搜索文件的内容。该文件的一个示例是: 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.rea
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
最后一条语句打印一个空列表。我也试着从控制台运行它,但结果是一样的
如果我对输入使用升华文本查找:^\d{1}\.\d{1}CR(IOT\d{3})。*$
我能找到匹配的线路
在Windows7框上使用python版本2.7.10和升华文本2
任何关于我做错了什么的想法都将不胜感激。Thanx您只需要包含多行修饰符并将正则表达式定义为原始字符串。满足这两个条件时,必须使用“多行”修改器
- 无论何时锚定
,^
都在您的输入正则表达式中使用$
- 当输入字符串包含多行时
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)
[]
如果我使用crnumlist=re.findall('\d{1,2}\.\d{1,2}CR(IOT\d{3}'),inp),它可以工作,但我仍然想了解第一个的错误。这里是否需要
regex
?