php - RegExp PHP 显示最小匹配

标签 php regex algorithm

我正在尝试在 php 中获取正则表达式的最小匹配。

例如:如果我有电视和电话这两个词,并且用户输入是 tel,我的正则表达式应该返回最小的词,在本例中是电话。 简而言之,我正在尝试做一个搜索脚本。但是对于用户输入中缺少的字母,我使用此 t[a-zA-Z0-9]{0,2}l[a-zA-Z0-9]{0,} 所以我的单词的最后一个字母后跟 N 个字符。

我的问题是:我怎样才能让我的 REGEXP 显示最小的单词。

最佳答案

很遗憾,您做不到。 Regex 可以匹配你想要的,但它不提供任何比较子匹配的函数。您必须匹配整个字符串,并根据您的情况通过 PHP 代码比较子匹配项。

// your array of matched words
$words = array(...);

$foundWordLength = null;
$foundWord = '';

foreach ($words as $word) {
   if (strlen($word) < $foundWordLength || $foundWordLength === null) {
      $wordLength = strlen($word);
      $foundWord = $word;
   }
}

echo $foundWord;

关于php - RegExp PHP 显示最小匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42353000/

相关文章:

regex -\s和\t有什么区别?

algorithm - 递归微分基本表达式

java - 在迭代时使用 'if' 条件查找项目与使用 get(key),当你已经需要迭代时

php - 使用 xpath 选择 css 类

javascript - 使用 PHP 和 Javascript 删除选定 ID 的选定行

javascript - 使用正则表达式将带有制表符的文本转换为有效的 JSON

algorithm - 一个包含 100 万个整数的大文件,找到最常出现的整数的最快方法是什么?

php - Zend 如何以编程方式创建 mysql 表?

重新排序数组的PHP函数

python - 如何知道拆分中的分隔符是什么?