在我想要实际匹配的内容之后停止正则表达式匹配*所有内容*!

发布于 2024-09-13 09:17:58 字数 408 浏览 1 评论 0原文

我对整个正则表达式很陌生,并尝试在 PHP 中执行 preg_match_all ,这是我想要的结果,但问题是它匹配我实际的之后的所有内容想要...像这样:

字符串:这是一些东西这里有一些代码还有更多 来自正则表达式的匹配:此处的一些代码还有更多 想要来自正则表达式的匹配:这里有一些代码

这是我正在使用的正则表达式: /(.*)<\/code>/

我认为它与开始和结束 / 分隔符有关,但我不完全确定。

任何帮助将不胜感激,谢谢!

I am quite new to the whole Regex thing and tried to do a preg_match_all in PHP which, kind of the results I wanted but the problem is it matches everything after what I actually wanted... like so:

String: This is something <code>Some code here</code> and more
Match from Regex: <code>Some code here</code> and more
Wanted match from Regex: <code>Some code here</code>

Here is my regular expression that I'm using:
/<code>(.*)<\/code>/

I think its something to do with the beginning and ending / delimiters but I'm not entirely sure.

Any help would be appreciated, thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

西瓜 2024-09-20 09:17:58

星号是贪婪的,这意味着它将尽可能匹配。改用

(.*?)

它,让它变得懒惰。您还可以使用否定字符类:

!<code>([^<]*)</code>!

编辑:由于 mvds 删除了他/她的答案,这里有一个提示:如果您不这样做,则可以避免转义斜杠 (/)不要像我上面那样使用它作为分隔符 ^ (使用 !

这是关于正则表达式的一个很好的资源:
http://www.regular-expressions.info/repeat.html

The star is greedy, meaning it will match as much as it can. Use

(.*?)

instead, making it lazy. You can also use negated character classes:

!<code>([^<]*)</code>!

EDIT: Since mvds deleted his/her answer, here's a tip: You can avoid having to escape the slash (/) if you don't use it as a delimiter, like I did above ^ (used ! )

Here's a good resource on regex:
http://www.regular-expressions.info/repeat.html

阪姬 2024-09-20 09:17:58

你想让 .* 变得非贪婪。如果您在模式的该部分之后放置 ? ,它将匹配正则表达式中匹配的下一部分之前的所有内容。因此,使正则表达式 /(.*?)<\/code>/

you want to make the .* be non greedy. If you put a ? after that part of the pattern it will match everything up to the next part of the regex that matches. So make the regex /<code>(.*?)<\/code>/

装迷糊 2024-09-20 09:17:58

你需要禁用贪婪。我相信使用 .*? 代替。

You need to disable greediness. Use .*? instead, I believe.

儭儭莪哋寶赑 2024-09-20 09:17:58

我不是 100% 确定这是如何编译的 - 你需要这样转义第二个 /

/<code>(.*)<\/code>/

以便 PHP 将其识别为要匹配的字符而不是正则表达式的末尾(我认为它可能会作为替代正则表达式进行编译)。

I'm not 100% sure how this is even compiling - you need to escape the second / as so:

/<code>(.*)<\/code>/

So that PHP recognises it as a character to match rather than the end of the regular expression (I think it may be compiling as a substitute regex).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文