gpt4 book ai didi

php - 正则表达式获取前后N个词

转载 作者:可可西里 更新时间:2023-10-31 22:12:49 35 4
gpt4 key购买 nike

我想获取给定搜索字符串的“上下文”。例如,对于以下行中的搜索字符串 myself

Me, my dog and myself are going on a vacation.

我想得到 dog and myself are going N=2。所以匹配前 2 个词和匹配后 2 个词。


目前我像这样匹配整行:

$lines = file($file->getFilename());
$lines = preg_grep('/'.$_POST['query'].'/', $lines);

最佳答案

preg_grep()应该那样做,但听起来你需要 preg_match()如果您可以在文本中有多个搜索词实例并希望找到所有这些实例 preg_match_all()

您要查找的正则表达式是:(?:[^ ]+ ){0,2}myself(?: [^ ]+){0,2}在这里解释演示:http://regex101.com/r/pB3eW0

我将其设计为匹配前后 2 个词,如果可以的话,否则匹配 1 个词,甚至不匹配。

允许变量 N 的代码可能如下所示:

$fileData=file_get_contents($file->getFilename());
$n=2;
$query='myself';
preg_match_all('/(?:[^ ]+ ){0,'.$n.'}'.$query.'(?: [^ ]+){0,'.$n.'}/i',$fileData,$matches);
print_r($matches);

记住要验证和转义用户输入,而不是仅仅在给定的函数中使用它!

关于php - 正则表达式获取前后N个词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15496795/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com