我有以下文字
<msgText>H3ll0World</msgText><msgText>HelloWorld</msgText><otherTagWithNumbers>456</otherTagWithNumbers>
我需要仅检索标记[\d]
中的数字(<msgText>
)才能替换它们。在这种情况下,正则表达式将返回3和0。
到目前为止我所拥有的:
(<msgText>)([\s\S]*?)(<\/msgText>)
Here我有一个这种情况的例子。
答案 0 :(得分:1)
您正在尝试使用正则表达式again...
解析XML但是,这可能适用于您正在处理的一些非常有限的XML子集:
switch (x) {
case 1:
//...
break;
case 2:
//...
break;
case 3:
//...
break;
default:
//...
}
答案 1 :(得分:1)
你想用一个积极的先行来看但不消费:
\d+(?=(?:(?!<\/?\w+>).)*<\/msgText>)
故障:
\d+
匹配任意数字 (?=
接下来是
(?:(?!<\/?\w+>).)*
一个顽固的贪婪令牌来匹配任何东西但不匹配
传递标签<\/msgText>
最后一个结束标记 )
积极前瞻的结束
以上是一个严格的匹配,但在某些情况下有一个简短的方法来实现相同的目标:
\d+(?=[^<]*<\/msgText>)