从所有 中获取文本 字符串中的标签
由于我对正则表达式完全没用,并且在过去的半个小时里一直困扰着我,我想我会将其发布在这里,因为它可能非常简单。
<a href="/folder/files/hey/">hey.exe</a>
<a href="/folder/files/hey2/">hey2.dll</a>
<a href="/folder/files/pomp/">pomp.jpg</a>
在 PHP 中,我需要提取 标记之间的内容示例:
hey.exe
hey2.dll
pomp.jpg
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
避免使用“.*”,即使您让它变得不贪婪,直到您对正则表达式进行了更多练习。 我认为对您来说一个好的解决方案是:
注意“/”分隔符 - 您必须在 PHP 中使用正则表达式函数的 preg 套件。 它看起来像这样:
Avoid using '.*' even if you make it ungreedy, until you have some more practice with RegEx. I think a good solution for you would be:
Note the '/' delimiters - you must use the preg suite of regex functions in PHP. It would look like this:
这似乎有效:
This appears to work:
([^<]*)
<a href="[^"]*">([^<]*)</a>
这是一个非常简单的:
但是,如果同一行中有多个匹配项,则应该小心,例如
在这种情况下,正确的正则表达式是:
注意“?” 在“*”量词之后。 默认情况下,量词是贪婪的,这意味着它们会吃掉尽可能多的字符(意味着在本例中它们只会返回“hey2.dll”)。 通过附加引号,您可以使它们变得不贪婪,这应该更适合您的需求。
Here is a very simple one:
However, you should be careful if you have several matches in the same line, e.g.
In this case, the correct regex would be:
Note the '?' after the '*' quantifier. By default, quantifiers are greedy, which means they eat as much characters as they can (meaning they would return only "hey2.dll" in this example). By appending a quotation mark, you make them ungreedy, which should better fit your needs.