正则表达式排除了一切,但是,单独

时间:2015-07-21 11:22:31

标签: php regex select

当前正则表达式:

([^ipd])

我得到正确的输出,虽然它没有单独取消选择它们。我想单独取消选择ipd

想要:

i
p
d

不想要:

ipd
ip
pd
id

我试过了:

([^ipd] {1})
([^i|p|d$])

2 个答案:

答案 0 :(得分:0)

^[ipd]$

您需要添加锚点以将匹配限制为i,p,d

$re = "/^[ipd]$/m"; 
$str = "i\np\nd\n\nDon't Want\nipd\nip\npd\nid"; 

preg_match_all($re, $str, $matches);

答案 1 :(得分:0)

这项工作在字符串中,并带有单独的字符:

[^ipd]|(?<=[ipd])[ipd]|[ipd](?=[ipd])

其中:

  • [^ipd] - 不是“我”,“p”或“d”;
  • (?<=[ipd])[ipd] - 匹配“i”,“p”或“d”(如果继续) “我”,“p”或“d”;
  • [ipd](?=[ipd]) - “i”,“p”或“d”,如果它被“i”,“p”或 “d”;

DEMO