2014-02-07 93 views
0

有人可以请解释我这个正则表达式的含义吗?php中的这个正则表达式是什么意思?

#<hr(.*)class="system-pagebreak"(.*)\/>#iU 

是否有工具将这些常规表达式转换为普通单词?

+1

这个工具非常清楚地说明每一个符号(标记)http://regex101.com/。您可能必须先分隔标志和分隔符。 – gskema

回答

1

这regex匹配以类“系统正-分页符”任何自闭小时,但与其他类。

“实际”正则表达式是#
iU落后之间的部分是两个“标志”规定,正则表达式将如何表现。 i表示正则表达式不区分大小写,U表示默认情况下正则表达式限定符是懒惰的。

正则表达式(<hr)的第一部分将作为一个字符串文字进行评估。它匹配任何组合如:

- <hr 
- <Hr 
- <hR 
- <HR 

然后遵循组评估(标记为())。评估将是特殊字符.(任何字符),它将被匹配多次。然后

遵循class="system-pagebreak"文字字符串评估。这将比赛这样的事情:

  • 类=“系统分页符SomeClass的”
  • 类=“系统分页符”

后,有再次任何字符尽可能多它来,然后一个字面匹配/>。反斜杠只是用于从正则表达式中去除斜线(因为它也是一个特殊的字符)。

6

它试图*匹配任何<hr>标签有class="system-pagebreak"属性。

hrclass和闭合/>匹配之间的(.*)段“零个或多个字符”,因此它可以匹配像

<hr id="what" class="system-pagebreak" style="display:block" /> 

#iU在最后的事使其不区分大小写(i)和非常规(U),以便.*匹配不会占用整个文档。

是否有工具将这些常规表达式转换为普通单词?

不是真的?你可以用“正常词汇”表示什么?这是一个非常直接的正则表达式,你不能将它“转化”为其他任何东西而不会失去其意义。有很多网站的测试正则表达式虽然,如Regex101

*请注意,我说的试图因为这是试图用(X)HTML交互的非常糟糕方式,并确保最终破裂。您应该使用DOM-parser

+0

和这里来标准链接到解析HTML与正则表达式的年龄老答案:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454# 1732454 – Vogel612

0

它将匹配<hr>标签与class="system-pagebreak"属性。它还将捕获小时和班级之间以及第二个引号和标签末尾之间的任何内容(/>)。 /转义斜线。我让它变得不敏感,并且不太认真。英镑(#)标志标志着模式的开始和结束。

0

此正则表达式将<hr直到class="system-pagebreak"见面会后,在同一行中的所有字符匹配,并把它的第一个捕获小组。然后,它会将所有字符(始终在同一行)放入捕获组2中,直到/>

目标可能是找到包含类system-pagebreak的自闭合hr标签。但是这是一个糟糕的模式,因为它会匹配得这种字符串:

<hr><div class="system-pagebreak"><img src="image.jpg" /> 
相关问题