gpt4 book ai didi

python - 在 Python 中匹配行首的字符串

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

我想在文本文件中的每一行的开头搜索特定模式。

这是文本文件的内容:

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

我想要输出为

NSUP
PSUP
SEL
A
B
C

我尝试了下面的代码,但它打印了一个空列表作为输出:

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))

如果我从 re.compile 模式中删除“^”,那么它可以工作,但它不会只在开始时寻找模式。

inoutPortList=re.compile(r'(input|output|inout)\s+(\w+)')

上面的正则表达式还会输出我不想要的文本文件中的最后两行(如下所示):

//sample text input pins
//sample text output pins

知道为什么当我使用“^”时我的正则表达式不起作用吗??

最佳答案

在整个缓冲区上使用 ^,您将在缓冲区的开头查找表达式。

要在每行的开头查找表达式,请使用多行标志:

inoutPortList=re.compile(r'^(input|output|inout)\s+(\w+)',flags=re.M)

输出:

NSUP
PSUP
SEL
A
B
C

另外:对于正则表达式模块,始终将标志作为关键字参数传递:flags=re.M 而不仅仅是 re.M。它适用于 re.compile 但不适用于 re.sub 因为“count”参数首先出现,这会产生奇怪的问题。

关于python - 在 Python 中匹配行首的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48952593/

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