正则表达式操纵

时间:2012-07-20 13:44:42

标签: regex matcher regex-greedy

我的输入是

String input = "I am doing <span id='icms'>test</span>on <span id='icms'>regex</span> exp."

现在我的输出就像

"regex exp"

但我的输出需要像这样

I am doing test on regex exp

因此需要有关正则表达式和匹配器的帮助。

2 个答案:

答案 0 :(得分:3)

您需要两次更换。首先将<span[^>]*id=['"]icms['"][^>]*>([^<]*)</span>替换为' $1 '(不带引号;它们只显示您必须预先添加空格)然后将' {2,}'(不再使用引号)替换为单个空间。

快速PowerShell测试:

PS> "I am doing <span id='icms'>test</span>on <span id='icms'>regex</span> exp." -replace '<span[^>]*id=[''"]icms[''"][^>]*>([^<]*)</span>',' $1 ' -replace ' {2,}',' '
I am doing test on regex exp.

答案 1 :(得分:1)

以下内容可以捕获每个不是标签的部分,这似乎是您想要的:

(?:(.*)<.*?>(.*))*

编辑:

然后是这个特定的标签:

(?:(.*?)<span id='icms'>([^<]*?)</span>(.*))*