regex - 正则表达式匹配所有包含某个属性值的 xml 标签
问题描述
我有一个 xml 文件,我想在其中匹配包含匹配 Perl 中某个字符串的属性的所有 xml 标记。
示例 XML:
<item attr="Car" />
<item attr="Apple_And_Pears.htm#123" />
<item attr="Paper" />
<item attr="Orange_And_Peach.htm#213" />
我想要一个正则表达式来抓取所有具有包含“.htm”的属性的节点
<item attr="Orange_And_Peach.htm#213" />
<item attr="Apple_And_Pears.htm#123" />
使用以下正则表达式,我匹配所有标签,而不仅仅是具有 .htm 属性的标签:
<item.*?attr="[^>]*>
在某个角色之前是否有某种积极的前瞻性?
谢谢
解决方案
适当的 Perl 解决方案不是正则表达式。使用Mojo::DOM(众多选项之一):
use strict;
use warnings;
use Mojo::DOM;
use File::Slurper 'read_text';
my $xml = read_text 'test.xml';
my $dom = Mojo::DOM->new->xml(1)->parse($xml);
my $tags = $dom->find('item[attr*=".htm"]');
print "$_\n" for @$tags;
推荐阅读
- cassandra - 在 Cassandra 中,如何将数据保存在列名中,同时将列值留空?
- hyperledger-fabric - Hyperledger 无法更新通道
- android - Android Studio XML 格式不填满屏幕
- markdown - 在 github 页面的降价表中
- python - POST 方法在被请求时不断发送 400 错误
- java - 无法启动剪贴簿虚拟机
- laravel - 如何翻译 Laravel 分页?
- node.js - postgresql to_char(date, 'day') 使用nodejs时得到不同的结果
- html - 使用 Bootstrap 创建统一的按钮组
- python - 管理 conda 和 pip 之间依赖关系的最佳实践