如何从正则表达式字符类中排除换行符? [英] How to exclude a line break from regex character class?
本文介绍了如何从正则表达式字符类中排除换行符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
给定此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屋!
查看全文