Python 中的 grep 等价物是什么?

Zoh*_*air 9 python regex

假设我有一个带有“我喜欢大象”行的文本文件。如果我将上述文件和管道传送到“grep 大象”,我会得到整行“我喜欢大象”。

如何使用 re 在 Python 中实现此功能?我一直在尝试以下方法:

test = re.search('elephants', 'I like elephants.\nThey are nice')
test.group(0)
Run Code Online (Sandbox Code Playgroud)

我只得到“大象”这个词,而不是整个句子作为输出。

我如何得到整个句子?谢谢你。

Ped*_*sta 11

您可以使用in关键字来检查您的子字符串:

with open('text_file.txt', 'r') as f:
    for line in f.readlines():
        if 'elephant' in line:
            print(line)
Run Code Online (Sandbox Code Playgroud)

或者,如果您有一个s包含\n字符的字符串:

for line in s.split('\n'):
    if 'elephant' in line:
        print(line)
Run Code Online (Sandbox Code Playgroud)

您的正则表达式仅打印,elephant因为这就是它捕获的内容:正是您的正则表达式字符串。如果您要尝试使用以下正则表达式:

test = re.search(r'(.*?elephants.*?)\n', 'I like elephants.\nThey are nice')
Run Code Online (Sandbox Code Playgroud)

然后你会得到结果test.group(0)test.group(1)其中包括大象前后的整条线。

In [22]: test.group(0)
Out[22]: 'I like elephants.\n'
Run Code Online (Sandbox Code Playgroud)

这是整个捕获的字符串。

In [23]: test.group(1)
Out[23]: 'I like elephants.'
Run Code Online (Sandbox Code Playgroud)

这只是捕获组(括号之间的字符串)。

  • @Zohair 当然,添加了解释;查看更新的答案! (2认同)