如何从正则表达式字符类中排除换行符? [英] How to exclude a line break from regex character class?

查看:0
本文介绍了如何从正则表达式字符类中排除换行符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

给定此PCRE模式:

/(<name>[^<>]*</name>[^<>]*<phone>[^<>]*</phone>)/

和此主题文本:

<name>John Stevens</name>  <phone>888-555-1212</phone>
<name>Peter Wilson</name>  
<phone>888-555-2424</phone>
如何才能使正则表达式匹配第一个姓名-电话对,而不匹配第二个?我不想匹配用换行符分隔的对。我尝试在被否定的字符类中添加行尾,如下所示[^<>$]*,但没有任何变化。

您可以使用以下在线工具测试您的表情:
http://rubular.com/
http://www.regextester.com/
谢谢。

推荐答案

我想这样就行了

/<name>[^<>]*</name>[^<>
]*<phone>[^<>]*</phone>/

您放在类[ ]中的内容必须是表示单个字符的内容。$被解释为类中的文字$,可能是因为$的行尾宽度为0,而不能在类中解释为0宽度。(由rigerunner在评论后编辑)

顺便说一句,我去掉了正则表达式周围的圆括号,因为无论匹配什么,都可以称为整个匹配。

这篇关于如何从正则表达式字符类中排除换行符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆