Regex 使用正则表达式查找包含特定内容的标记之间的所有内容

Regex 使用正则表达式查找包含特定内容的标记之间的所有内容,regex,Regex,输入(无效的xml): Blablatest2312xNonazxtestTestazxCzasSad 目标: 正在提取包含“测试”的所有标记内容: 1231测试2312X 试验 Testazxcz 我试过这个正则表达式: <Val>.?Test.*?<End> ?测试。*? 但它只捕获第一次出现,在“测试”之前没有任何字母 有什么想法吗?因为您没有提到要使用哪种语言,所以我使用的是awk: awk -F"[><]" '{for(i=1;i<=NF

输入(无效的xml):

Blablatest2312xNonazxtestTestazxCzasSad
目标:

正在提取包含“测试”的所有标记内容:

1231测试2312X

试验

Testazxcz

我试过这个正则表达式:

<Val>.?Test.*?<End>
?测试。*?
但它只捕获第一次出现,在“测试”之前没有任何字母


有什么想法吗?

因为您没有提到要使用哪种语言,所以我使用的是
awk

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

试试这个
(?:\d |\w)*测试(?:\d |\w)*
(?:)(.Test.*)(.Test.*)(.Test.*)
正则表达式的问题是
,意思是“任意一个可选符号”。试试这个:
\w*?测试\w*?
。星号(*)表示“零个或多个单词字符(a-z、a-z、0-9、908;)”,允许在“测试”之前或之后匹配任意数量的字符,包括零个字符。@Inder您的正则表达式非常接近。。但它只捕捉到了第一个事件
awk -F"[><]" '{for(i=1;i<=NF;i++){if($i ~ /Test/){print $i}}}' Input_file
Test2312x
Test
Testazxcz