1

我想匹配包含至少一个强制字符和允许字符的整个单词。

例如
强制字符是:[t,a,x]
允许字符是:[i,e]

t     : passed (one of mandatories are here)
tea   : passed (two of mandatories(t,a) and one allowed(e) here)
e     : failed (none of mandatory is here)
teas  : failed (two of mandatories(t,a) and one allowed(e) here but one intruder(s))

什么是合适的正则表达式代码?它将用于搜索 12.000 行 MySQL 表,其中每行包含一个单词作为 PHP 项目。

4

3 回答 3

6

与其直接给出答案,不如让我帮你自己做。通过的单词由以下序列组成:

  • 零个或多个允许或强制字符
  • 强制字符
  • 零个或多个允许或强制字符

为其中的每一个编写正则表达式,然后将它们连接起来以获得整个事物的正则表达式。

于 2013-06-09T19:41:47.640 回答
0

在 perl 中它会是..

$string =~ /^[tax]*[ie]+$/i; #i is for ignore case

* 是 1 或更多 + 是 0 或更多

我刚刚意识到你想让整个词等一下让我重写它..

^ 和 $ 将匹配行的开始和结束。

于 2013-06-09T19:49:08.137 回答
0

您可以使用此模式:

\b[ie]*+[taxie]++\b

解释:

因为[ie]*+在左边有一个单词边界和一个所有格量词,它会尽可能地抓住所有的东西,并且永远不会把它们还给它们,那么下一个字符必须是 a i,an或 an来自下一个类的 + 量词,至少施加 1特点。etax

右侧的单词边界不允许其他类型的字符。

于 2013-06-09T19:50:46.643 回答