我想在文本文件中每一行的开头搜索特定的模式。在
以下是文本文件的内容:
module abc ( A, B, C, NSUP, PSUP, SEL );
input NSUP;
input PSUP;
input SEL;
inout A;
inout B;
output C;
//sample text input pins
//sample text output pins
我希望输出为
^{pr2}$我尝试了下面的代码,但它输出一个空列表:
fh=open("VamsModel","r")
contents=fh.read()
inoutPortList=re.compile(r'^(input|output|inout)\s+(\w+)')
matches = inoutPortList.finditer(contents)
for match in matches:
print(match.group(2))
如果我从中删除“^”重新编译模式然后它工作,但它不会只在开始时寻找模式。在
inoutPortList=re.compile(r'(input|output|inout)\s+(\w+)')
上面的regex还将从我不想要的文本文件中输出最后两行(如下所示):
//sample text input pins
//sample text output pins
你知道为什么我使用“^”时正则表达式不起作用吗??在
在整个缓冲区上使用
^
,您将在缓冲区的开始处查找表达式。在要在每行开头查找表达式,请使用多行标志:
输出:
^{pr2}$旁白:对于regex模块,始终将标志作为关键字参数传递:
flags=re.M
而不仅仅是re.M
。它与re.compile
一起工作,但不能与re.sub
一起工作,因为“count”参数排在第一位,这会产生奇怪的问题。在如果知道要查找的字符串,可以使用
startswith
代替正则表达式你需要使用re.多行(re.M简写)标志,指示^在行首匹配,而不是在字符串的开头:
相关问题 更多 >
编程相关推荐