为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式选择标签之间的所有文本

/ 猿问

正则表达式选择标签之间的所有文本

慕沐林林 2019-12-17 15:02:30

在2个标签之间选择所有文本的最佳方法是什么-例如:页面上所有“ pre”标签之间的文本。



查看完整描述

3 回答

?
慕田峪9158850

您可以使用"<pre>(.*?)</pre>",(用所需的任何文本替换pre)并提取第一组(对于更具体的说明,请指定一种语言),但这只是假设您拥有非常简单且有效的HTML的简单概念。

正如其他评论者所建议的那样,如果您要执行复杂的操作,请使用HTML解析器。


查看完整回答
反对 回复 2019-12-17
?
饮歌长啸

标签可以在另一行中完成。这就是为什么\n需要添加的原因。


<PRE>(.|\n)*?<\/PRE>


查看完整回答
反对 回复 2019-12-17
?
汪汪一只猫

这就是我会用的。

(?<=(<pre>))(\w|\d|\n|[().,\-:;@#$%^&*\[\]"'+–/\/®°⁰!?{}|`~]| )+?(?=(</pre>))

基本上,它的作用是:


(?<=(<pre>))选择必须在<pre>标签之前


(\w|\d|\n|[().,\-:;@#$%^&*\[\]"'+–/\/®°⁰!?{}|~]| )这只是我要应用的正则表达式。在这种情况下,它将选择字母或数字或换行符或方括号中示例中列出的某些特殊字符。竖线字符|仅表示“ OR ”。


+?加上字符状态以选择上述一项或多项-顺序无关紧要。问号将默认行为从“贪婪”更改为“不贪婪”。


(?=(</pre>))选择必须附加</pre>标签

//img3.sycdn.imooc.com/5df87da90001198809800935.jpg

根据您的用例,您可能需要添加一些修饰符,例如(i或m)


我 -不区分大小写

m-多行搜索

在这里,我在Sublime Text中执行了此搜索,因此不必在正则表达式中使用修饰符。


Javascript不支持向后看

上面的示例可以很好地与PHP,Perl,Java ...等语言配合使用,但是Javascript不支持向后看,因此我们不得不忘记使用(?<=(<pre>))并寻找某种解决方法。也许简单地从每个结果的结果中去除结果的前四个字符,就像这里 Regex匹配标记之间的文本


另请参阅JAVASCRIPT REGEX DOCUMENTATION中未捕获的括号


查看完整回答
反对 回复 2019-12-17

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信