Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regexp可以使用升华文本搜索,但不能使用python脚本_Python_Regex_Sublimetext2 - Fatal编程技术网

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