首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex搜索展望未来

Regex搜索展望未来
EN

Stack Overflow用户
提问于 2016-07-22 03:26:38
回答 1查看 29关注 0票数 1

使用PCRE

文本:

代码语言:javascript
复制
<xsi:placeOrderResult list="test:value">1469120938131</placeOrderResult></soapenv:Body>

希望匹配"<“字符之后(但不包括)、直到":”字符并包括“:”字符的任何字母数字字符,但必须在找到第一个">“字符之前找到冒号。

上面的预期结果是:

代码语言:javascript
复制
<placeOrderResult list="test:value">1469120938131</placeOrderResult></soapenv:Body>

第一部分相当简单--我搞不懂的是“冒号必须在第一个>之前找到”。

EN

回答 1

Stack Overflow用户

发布于 2016-07-22 04:22:01

代码语言:javascript
复制
(?<=<)(\w+?:)(?=[^<]*?>)

https://regex101.com/r/yY7yD7

代码语言:javascript
复制
$re = "/(?<=<)(\\w+?:)(?=[^<]*?>)/"; 
$str = "#Text:\n<xsi:placeOrderResult list=\"test:value\">1469120938131</placeOrderResult></soapenv:Body>\n\n#Expected result\n<placeOrderResult list=\"test:value\">1469120938131</placeOrderResult></soapenv:Body>"; 
$subst = ""; 

$result = preg_replace($re, $subst, $str, 1);

Regex解释说:

  • (?<=<) -正后视-匹配字符<.
  • \w+?匹配任何单词字符a-zA-Z0-9_在一到无限次之间,尽可能少的次数,根据需要扩展lazy
  • :匹配字符literally
  • (?=[^<]*?>)正向前视-匹配每个不<的字符在一到无限次之间,尽可能少的次数,需要的惰性扩展。直到它缓存字符>.

当您没有为捕获的正则表达式替换任何内容"“时,它会给出您预期的结果:

代码语言:javascript
复制
<placeOrderResult list="test:value">1469120938131</placeOrderResult></soapenv:Body> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38512774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档