有人能解释这个正则表达式背后的含义吗?
'/<div align="left"><a href="(.*?)">(.*?)<\/a><\/div>/s'
从我所知道的是,它是搜索所有div对齐标签,等于左,但对于下一部分我迷路了。
发布于 2012-03-21 06:28:52
不管这是什么用途,也不管它是否有效(正则表达式不是匹配anchor
标签的选项),为了解释起见,正则表达式<a href="(.*?)">(.*?)<\/a><\/div>/s
的第二部分只是尝试将所有anchor
标签与任何url以及包含该url的文本匹配。
当我说“尝试”时,这就是编写正则表达式的人所要做的事情。
发布于 2012-05-23 06:05:16
'/<div align="left"><a href="(.*?)">(.*?)<\/a><\/div>/s'
上面的正则表达式是非常具体的,而不是通用的<a>
标签正则表达式捕获。这种特异性(硬编码文本)将使正则表达式变得“脆弱”(容易损坏)。
</a>
标记和结束</div>
标记中的正斜杠是转义字符之前的所有字符,包括换行符characters.<a>
标记,就像正则表达式中所示的那样。如果将任何其他属性添加到<a>
标记,则此正则表达式将中断。例如,如果href值是用单引号而不是双引号分隔的,正则表达式将中断-匹配失败。<a>
标记必须只有href属性,不能有其他属性。<a>
标记后面必须紧跟一个关闭的</div>
标记,就像正则表达式一样。<a>
标记文本。通常,捕获匹配将输出到数组中。发布于 2012-03-21 06:32:32
它在带有向左对齐的div中搜索锚定标签。它还保存href和锚点文本,以便以后可以引用它们。
匹配:<div align="left"><a href="#">test</a></div>
正则表达式有几处错误:首先,使用点运算符(".")应该避免。它被设计为匹配除新行之外的所有内容,这意味着以下内容将匹配:
<div align="left"><a href="#">test</a><a href="#">test</a></div>
这会将文本保存为"test“,将href保存为"#">test</a><a href="#
”。
https://stackoverflow.com/questions/9799552
复制相似问题