有人可以解释一下这个正则表达式意味着什么吗?
#<hr(.*)class="system-pagebreak"(.*)\/>#iU
是否有工具将这些常规表达式转换为普通单词?
答案 0 :(得分:6)
尝试*匹配具有<hr>
属性的所有class="system-pagebreak"
代码。
(.*)
和hr
之间的class
段与结束/>
匹配“零个或多个字符”,因此它可以匹配
<hr id="what" class="system-pagebreak" style="display:block" />
最后的#iU
使其不区分大小写(i
)和不合格(U
),以便.*
匹配不会占用整个文档
是否有工具将这些常规表达式转换为普通单词?
不是吗?你能说“正常的话”是什么意思?这是一个非常直接的正则表达式,你不能在不失去意义的情况下将它“转换”为其他任何东西。 测试正则表达式有很多网站,例如Regex101。
*请注意,我说尝试,因为这是尝试与(X)HTML交互的非常糟糕的方式,并且肯定会最终破解。您应该使用DOM-parser。
答案 1 :(得分:1)
此正则表达式将任何自闭合小时与“sytem-pagebreak”类匹配,但不与其他类匹配。
“实际”正则表达式是#
之间的部分
后面的iU
是两个“标志”,指定正则表达式的行为方式。 i
表示正则表达式不区分大小写,U
表示默认情况下正则表达式限定符是惰性的。
正则表达式的第一部分(<hr
)将被评估为字符串文字。它匹配任何组合,如:
- <hr
- <Hr
- <hR
- <HR
然后进行小组评估(由()
标记)。评估将是特殊的字符.
(任何字符),它将被匹配多次。
跟随class="system-pagebreak"
的文字字符串评估。这将不匹配以下内容:
之后再次出现任何字符,然后是/>
的字面匹配。反斜杠只是用于从正则表达式中转义斜杠(因为它也是一个特殊的字符)。
答案 2 :(得分:0)
它会将<hr>
标记与class="system-pagebreak"
属性相匹配。它还将捕获hr和class之间以及第二个引号和标记末尾(/>
)之间的任何内容。 /逃避斜线。我让它变得不敏感而且不合适。磅(#)标志标志着模式的开始和结束。
答案 3 :(得分:0)
是否有工具将这些常规表达式转换为普通单词?
您可以使用像www.regexper.com这样的工具来显示正则表达式:http://www.regexper.com/#%23%3Chr(.)class%3D%22system-pagebreak%22(.)%5C%2F%3E%23这有助于理解它。
有人可以解释一下这个正则表达式意味着什么吗?
已经有足够好的答案:)
答案 4 :(得分:0)
此正则表达式将匹配<hr
之后同一行中的所有字符,直到满足class="system-pagebreak"
,并将其放在第一个捕获组中。然后,它会将所有字符(始终在同一行)放入捕获组2中,直到/>
目标可能是找到包含类system-pagebreak
的自动关闭hr标记。然而,这是一个糟糕的模式,因为它也会匹配这种字符串:
<hr><div class="system-pagebreak"><img src="image.jpg" />