求教正则表达式高手,怎样匹配一个字符串里有指定的字符? 20
如:我想匹配所有<p>sfsdfdsf123456kjljlkjk</p>,标签里除了其它字符外必须有123456...
如:我想匹配所有<p>sfsdfdsf123456kjljlkjk</p>,标签里除了其它字符外必须有123456
展开
3个回答
展开全部
朴素写法:<p>.*?123456.*?</p>
高级写法,用断言(或称侦测):<p>(?=.*?123456).*?</p>
之所以称为高级,是它的扩展性好,例如在要求既有123456又有654321,二者顺序不明的情况下,可以:<p>(?=.*?123456)(?=.*?654321).*?</p>
高级写法,用断言(或称侦测):<p>(?=.*?123456).*?</p>
之所以称为高级,是它的扩展性好,例如在要求既有123456又有654321,二者顺序不明的情况下,可以:<p>(?=.*?123456)(?=.*?654321).*?</p>
追问
如果没有换行的情况下就能匹配得到,但如果P标签里有换行的话,就匹配不到,应该怎么改呢?
追答
把.改成[\s\S],完整如下:
(?=[\s\S]*?123456)[\s\S]*?
或者再用一种断言,可不用*?而用*,据说性能更好,如下:
(?=(?:(?!123456|
)[\s\S])*123456)(?:(?!
)[\s\S])*
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询