首页 > 解决方案 > 如何正确构建正则表达式?

问题描述

我无法弄清楚问题是什么以及为什么我的常规不起作用。

with open('output.csv', 'w') as outFile:
    for line in fileone:
        if re.match(r'\"C:\\Program Files \(x86\)\\Google\\Chrome\\Application\\chrome\.exe\" --type',line):
            pass
        else:
            if line not in filetwo:
                outFile.write(line)

上面的代码应该匹配下面的所有行并传递它:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --type
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --type
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --type
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --type
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --type
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --type
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --type
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --type
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --type

标签: pythonre

解决方案


您的用例不需要正则表达式,因为您有一个通用字符串。相反,您可以使用str.startwith()来匹配您的字符串是否以任何特定字符串开头。例如:

>>> "my string".startswith("my")
True

>>> "my string".startswith("string")
False

因此,您的代码将变为:

with open('output.csv', 'w') as outFile:
    for line in fileone:
        #       vvvvvvvvv updated here
        if line.startswith('"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --type'):
            pass
        else:
            if line not in filetwo:
                outFile.write(line)

或者可以更简化为:

my_string = '"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --type'

with open('output.csv', 'w') as outFile:
    for line in fileone:
        if not line.startswith(my_string) and line not in filetwo:
            outFile.write(line)

推荐阅读