正则表达式匹配包含(一个或多个)强制和允许字符的整个单词

时间:2013-06-09 19:38:11

标签: php regex

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

例如
强制字符是:[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))

适当的REGEX代码是什么? 它将用于搜索12.000行的MySQL表,每行包含一个单词作为PHP项目。

3 个答案:

答案 0 :(得分:6)

让我帮助你自己,而不是直截了当地回答。通过的单词由以下序列组成:

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

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

答案 1 :(得分:0)

在perl中,它将是..

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

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

我刚刚意识到你想让整个单词坚持让我重写它。

^和$将匹配行的开头和结尾。

答案 2 :(得分:0)

您可以使用此模式:

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

说明:

由于[ie]*+左侧有一个单词边界,并且占有量词,它会尽可能地抓住所有ie并且永远不会回复它们,然后下一个字符必须是来自下一个班级的tax,其中+量词至少包含1个字符。

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