gpt4 book ai didi

php - 只与正则表达式匹配一次

转载 作者:行者123 更新时间:2023-12-04 04:32:09 25 4
gpt4 key购买 nike

我正在使用这个正则表达式来处理一些没有数字的单词,并且效果很好

(?:searchForThis|\G).+?(\b[^\d\s]+?\b)

正则表达式搜索整个文档而不仅在包含 searchForThis 的行中的问题

所以如果我有 2 次 searchForThis 它将花费它们两次

我只想在第一行停止它,这样它就不会在之后搜索其他行
请问有什么帮助吗?

我在 php 中使用 Regex

这里的问题示例: http://www.rubular.com/r/vPhk8VbqZR

在示例中,您将看到:
Match 1
1. word
Match 2
1. worldtwo
Match 3
1. wordfive
Match 4
1. word
Match 5
1. worldtwo
Match 6
1. wordfive

但我只需要:
Match 1
1. word
Match 2
1. worldtwo
Match 3
1. wordfive

你会看到它做了两次

============按要求编辑更多细节============================

在我的 php 中,我有:
define('CODE_REGEX', '/(?:searchForThis|\G(?<!^)).*?(\b[a-zA-Z]+\b)/iu')

输出:
if (preg_match_all(CODE_REGEX, $content, $result))
return trim($result[1][0].' '.$result[1][1].' '.$result[1][2].' '.$result[1][3].' '.$result[1][4].' '.$result[1][5]);

谢谢

最佳答案

您可以改用此模式:

(?:\A[\s\S]*?searchForThis|\G).*?(\b[a-z]+\b)/iu

要么
(?:\A(?s).*?searchForThis|\G)(?-s).*?(\b[a-z]+\b)/iu

要处理第一个“searchForThis”和其他人或字符串末尾之间的多行,您可以使用:(使用您的示例字符串,您将获得“After”和“this”。)
(?:\A.*?searchForThis|\G)(?>[^a-z]++|\b[a-z]++\S)*?(?!searchForThis)(\b[a-z]+\b)/ius

注意:在所有三种模式中,您都可以替换 \A^因为没有使用多行模式。小心为ruby正则表达式设计的rubular:m in ruby​​ = s in php(即dotall/singleline模式),php中的m是多行模式(每行开头都可以匹配 ^)

关于php - 只与正则表达式匹配一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20425212/

25 4 0
文章推荐: google-chrome-extension - 在 PPAPI 中加载文件
文章推荐: boto - 我需要在 Django+Gunicorn+GEvent+Boto 结构中调用monkey.patch_all() 吗?
文章推荐: ruby-on-rails - 如何像素化图像回形针
文章推荐: vb.net - 将 IList 转换为 List