我正在尝试做的是,给出一个字符串,如
trying to download some music, give me the details to download the music
通过preg_match_all获得匹配的结果,这会给我类似的东西
[0][0] => download some music
[0][1] => some
[1][0] => download the music
[1][1] => the
但我无法实现这一目标。我正在使用这种模式
§download(.*)music(.*)§
但问题是它只匹配第一个download
(来自download some music
的那个)和最后一个music
(来自download the music
的那个),而我的目标是找到所有事件并在两个单词之间得到字符(它应该适用于任意数量的单词,但让我们从两个单词开始)。
感谢任何帮助,谢谢! :)
更新:问题解决之后,我写了一篇关于如何使用这种正则表达式进行温和模式匹配的文章(或者更确切地说,在给定文本中计算模式相关性):http://www.thecrowned.org/method-for-pattern-relevance-in-text
答案 0 :(得分:3)
\bdownload\b(.*?)\bmusic\b
^^
进行non greedy
搜索。查看演示。
https://regex101.com/r/fM9lY3/29
$re = "/\\bdownload\\b(.*?)\\bmusic\\b/";
$str = "trying to download some music, give me the details to download the music";
preg_match_all($re, $str, $matches);