是否可以找到任何声明了两次声明的标签?更具体地说,我想扫描html文档并查找任何具有class =“”两次的标记。
所以类似于:
<textarea class='something' id='nomatter' name='nomatter' class='different'>
感谢您的时间和考虑!
答案 0 :(得分:1)
您可以使用此模式:
<\w+(?:[^>]*?\sclass\s*=){2}[^>]+>
答案 1 :(得分:0)
我认为这取决于你正在使用正则表达式的上下文。你是在文本编辑器,PHP还是其他东西?
另外,您是否只是想手动调整它们还是替换它们?
某些正则表达式引擎允许您在搜索字符串中使用捕获的组。
你可能会做这样的事情,只是为了找到它们:
<.+?\s([a-zA-Z]+?)='[a-zA-z-]+?'.*?\s\1='[a-zA-Z-]+?'.*?>
那里的\1
引用了开头附近的括号中的第一个(也是唯一一个)捕获的组。
在一个不相关的说明中,我认为您在HTML属性中使用单引号很奇怪。
答案 2 :(得分:0)
#!/usr/bin/perl
use strict;
use warnings;
my $string = "<textarea class='something' id='nomatter' name='nomatter' class='different'>";
my @matches = ($string =~ m/<.+?class='([a-zA-Z]+?)'.*class='([a-zA-Z-]+?)'/g);
if ( scalar @matches > 1 ) { print "There is two class attributes in this line!\n"; }