簡體   English   中英

過濾包含字符串完全匹配的行

[英]Filter lines that contains exact match of a string

我正在嘗試在python中過濾包含字符串的完全匹配的文件中的行。 首先,我編寫了以下代碼部分,

lines = ["z  = xxx;  %eflee","x  = eee ;  %flee"]

for lineNo,line in enumerate(lines):
    tags = ["flee"]
    for tag in tags:
        if tag in line:
           print(line)

所需輸出:

x  = eee ;  %flee

獲得的輸出:

z  = xxx;  %eflee
x  = eee ;  %flee

有人可以解釋如何獲得所需的輸出嗎?

以下是將每個標簽僅作為一個整體匹配的方法:

import re

lines = ["z  = xxx;  %eflee","x  = eee ;  %flee"]

for lineNo,line in enumerate(lines):
    tags = ["flee"]
    for tag in tags:
        if re.search(r'\b%s\b' % tag, line):
           print(line)

輸出:

x  = eee ;  %flee

r'\\ bflee \\ b'是僅與整個單詞'flee'匹配的正則表達式。 之所以起作用,是因為“ \\ b”表示僅在單詞邊界處匹配。

如果您可能在一行中匹配兩個標簽,並且又不想重復打印同一行兩次,則應在同一縮進級別的“ print(line)”下放置“ break”。

您不使用lineNo。 如果您確實不需要,可以將“ for”行更改為:

for line in lines:
import re


lines = ["z  = xxx;  %eflee","x  = eee ;  %flee"]
tags = ["flee"]
pattern = "|".join([" %{} ?".format(t) for t in tags])
# pattern: ' %flee ?'
regex = re.compile(pattern)

for lineNo,line in enumerate(lines):
    if regex.search(line):
        print(line)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM