首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >phrase关键字短语匹配

phrase关键字短语匹配
EN

Stack Overflow用户
提问于 2013-07-23 16:20:14
回答 2查看 246关注 0票数 2

我有一个文本字段,用户将输入逗号分隔的关键字或关键短语,然后服务器将使用这些值来检查多个文本体是否匹配。

所以,基本上,我需要的是匹配一个确切的短语,不区分大小写,可能在一个文本中的空格。

通过生成以下正则表达式,我可以很容易地匹配关键字:

示例关键词peanut, butter, jelly

Regex生成的/peanut|butter|jelly/i

然而,拥有空间不起作用。即使我用\s替换给定值中的空格

示例peanut butter, jelly sandwich, delicious

Regex/peanut\sbutter|jelly\ssandwich|delicious/i

怎样才能准确地匹配这些短语呢?不区分大小写并使用PHP的preg_match

谢谢。

编辑

这就是我要做的:

代码语言:javascript
复制
$keywordsArray = array_map( 'trim', explode( ',', $keywords ) );
$keywordsArrayEscaped = array_map( 'preg_quote', $keywordsArray );
$keywordsRegex = '/' . implode( '|', $keywordsArrayEscaped ) . '/i';

上面的表达式如前所述(不需要将空格替换为\s,因为它不起作用)。)

接下来,我简单地做了preg_match( $keywordsRegex, $text );

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-23 16:31:33

我不明白为什么它不能与空格或\s一起工作。应该是这样的。但是要回答你提出的一般性问题,匹配正则表达式中确切短语的方法是用\Q\E包围它们。

代码语言:javascript
复制
/\Q<phrase 1>\E|\Q<phrase 2>\E|\Q<phrase 3>\E/

通常用于包含转义符或regex元字符的文本。你真的不应该为了空间而需要这个。

票数 3
EN

Stack Overflow用户

发布于 2013-07-23 16:40:19

我在您的代码中真正能找到的唯一问题是,您没有为结果填写第三个字段;

代码语言:javascript
复制
preg_match($keywordsRegex, $text, $results);

var_dump($results);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17815644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档