python - 搜索目录中的字符串

标签 python regex

我正在尝试在 Python 中搜索给定字符串模式的目录。然后我想将匹配项组装到一个数组中。

起初,我尝试使用 grep:

regex = " dojo.require(..*) "
bashCommand = "grep"+" --only-matching -r -h"+regex+baseDir
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
dirStr = process.communicate()[0]

但我意识到我需要支持多行字符串,例如

dojo.require(
"abc"(;

所以 grep 不是一个选项。

还有哪些其他方法可以实现此目的?提前致谢。

最佳答案

您可以使用 os 的组合在纯 Python 中实现此功能,而不是调用 grep和 re 。使用re.DOTALL允许多行匹配的标志。例如:

import re, os

def grep(regex, base_dir):
    compiled_regex = re.compile(regex, re.DOTALL)
    matches = list()
    for filename in os.listdir(base_dir):
        full_filename = os.path.join(base_dir, filename)
        if not os.path.isfile(full_filename):
            continue
        with open(os.path.join(base_dir, filename)) as fh:
            content = fh.read()
            if compiled_regex.search(content):
                matches.append(full_filename)
    return matches

print grep(" dojo.require(..*) ", ".")

关于python - 搜索目录中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13042592/

相关文章:

javascript - 使用 CSS/JavaScript 突出显示特定单词

javascript - 使用 RegExp 验证本地和国际号码

python - 如何显示指定目录中的文件列表

jquery - 如何执行 jQuery 正则表达式来查找我网站上右箭头 → 的所有 HTML 实体并添加类?

python - C++ 相当于 Python 的 __init__

python - Kivy 外部规则固有

python - 使用常规exp。在Python中

java - 模式前瞻

python - 我们如何在 Python 中获取可选的类属性?

python - 从 Python 和 impacket 获取 TCP 数据包有效载荷