gpt4 book ai didi

regex - 将匹配的正则表达式复制到新文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:57 31 4
gpt4 key购买 nike

我想将正则表达式匹配的文本复制到一个新文件中。

<SHOPITEM>([\s\S]*?)<YEAR>2015<\/YEAR>([\s\S]*?)<\/SHOPITEM>

([\s\S]*?) = 任何文本,任何行

这在 Sublime 编辑器中有效(我能够找到),但是这个正则表达式如何查找 sed/grep(或任何其他 Unix 工具)?

最佳答案

通常 sedgrep用于搜索不是多行模式的行,因为在某些条件下它仍然是可能的。

我建议使用应该安装在您计算机上的 Perl:

perl -p -e 'undef $/;$_=<>;print $& if /<SHOPITEM>([\s\S]*?)<YEAR>2015<\/YEAR>([\s\S]*?)<\/SHOPITEM>/i;'

请注意,如果您嵌套了 <shopitem>,则此正则表达式将不起作用。标签甚至多次出现。而是使用 XML 解析器。

您还可以编写一个程序来解析您的 xml 文件,这次它将捕获所有匹配项。

我的解析器:

#!/usr/bin/env perl
undef $/;
$_ = <>;
print while(/<(shopitem)>[\s\S]*<(year)>2015<\/\2>[\s\S]*<\/\1>/ig);

你可以执行:

$ chmod u+x myparser.pl
$ ./myparser.pl myfile.xml

关于regex - 将匹配的正则表达式复制到新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28285743/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com