首页 > 解决方案 > Perl 中的模糊匹配

问题描述

我想用不同的字符串做一些模糊匹配,比如 air twist应该匹配air-twistor air twistsor air-twists

在 perl 中,我们是否有一些模块可以做到这一点?还是我们可以手动执行,例如使用正则表达式?

标签: perlfuzzy-comparison

解决方案


如果您只想匹配两个特定单词之间的任何非字母数字字符,则可以使用如下正则表达式:

/air[^a-z0-9]twists/i

[^a-z0-9]匹配任何不是字母或数字的字符;因此它将匹配空格或标点符号等内容。尾随i后缀告诉正则表达式忽略字母大小写。

这个特定的正则表达式将匹配如下字符串:

air twists
AIR TWISTS
Air-Twists
AIR_TWISTS
air/twists
air.twists
air:twists

... 等等。

如果要匹配多个分隔单词的非字母数字字符,+请在正则表达式中添加 a:

/air[^a-z0-9]+twists/i

这匹配更多的字符串,如下所示:

air  twists
air---twists
air, twists
air && twists
air<=>twists

推荐阅读