这个正确的正则表达式是什么?

这个正确的正则表达式是什么?

我有一个很长的 txt 文件,如下所示:

notes = "asdfasasfs";
name = "Bob Field";
time = "08:00";
address = "123 Apple Road";
phone = "555-1234";
zip = "33456";
date = "2021-03-29 23:00:00 +0000";

对于不同的人来说,这一过程要重复数千次。

我想列出timezip并排显示它们,就像

time = "08:00" ... zip = "33456"
time = "10:00" ... zip = "11123"
time = "13:00" ... zip = "43567"
time = "17:00" ... zip = "37754"

我已经尝试过这个正则表达式

.*(time.*\".*\";).*(zip.*\".*\";).*

希望以后能用到它

$1 ... $2

但这不起作用。

有任何想法吗?

答案1

您可以使用这个正则表达式解决您的问题:

[\s\S]+?^(time .+);[\s\S]+?^(zip =.+?);[\s\S]+?$

并替换为:$1 ... $2

演示与说明

这适用于多种正则表达式。

答案2

如果每个集合都恰好有一个“Time”和“Zip”,那么效果很好:

$ egrep '^(time|zip)' < in | paste - - | sed -e 's/;/ .../; s/;//'
time = "08:00" ... zip = "33456"
time = "08:01" ... zip = "33457"
time = "08:02" ... zip = "33458"
time = "08:03" ... zip = "33459"

(我通过用不同的时间和 zip 值重复您的示例 3 次来模拟这样的输入)

相关内容