首页 > 解决方案 > 使用正则表达式查找包含特定内容的标签之间的所有内容

问题描述

输入(无效的 xml):

blabla<Val>Test2312x<End><Val>Nonazx<End><Val>Test<End><Val>Testazxcz<End><Val>asdsad<End>

目标:

提取所有包含“测试”的标签内容:

1231Test2312x

测试

测试

我试过这个正则表达式:

<Val>.?Test.*?<End>

但它只捕获“测试”之前没有任何字母的第一次出现。

有任何想法吗 ?

标签: regex

解决方案


由于您没有提到要使用哪种语言,所以我正在使用awk

awk -F"[><]" '{for(i=1;i<=NF;i++){if($i ~ /Test/){print $i}}}' Input_file

输出如下。

Test2312x
Test
Testazxcz

推荐阅读