php正则表达式(过滤器?),其中不应使用正则表达式

php正则表达式(过滤器?),其中不应使用正则表达式,php,regex,Php,Regex,是否可以添加一个“过滤器”,如果找到,正则表达式不会拆分这些单词哇,我希望我的英语有意义:) 让我举例说明 这是我当前用于拆分字符串的正则表达式,例如:字符串放在一起 $taglist=preg_replace('/([a-z])([A-Z])/','$1 $2', $taglist); 使用正则表达式生成的示例字符串:字符串为SIt TING 我想有一个过滤器,我可以把它放在座位上,这样正则表达式就不会把这个词分开 如果我的解释不够好,请告诉我,我仍在努力学习英语:) 哦,谢谢你的社区 你的

是否可以添加一个“过滤器”,如果找到,正则表达式不会拆分这些单词哇,我希望我的英语有意义:)

让我举例说明

这是我当前用于拆分字符串的正则表达式,例如:字符串放在一起

$taglist=preg_replace('/([a-z])([A-Z])/','$1 $2', $taglist);
使用正则表达式生成的示例字符串:字符串为SIt TING

我想有一个过滤器,我可以把它放在座位上,这样正则表达式就不会把这个词分开

如果我的解释不够好,请告诉我,我仍在努力学习英语:)


哦,谢谢你的社区

你的意思是这样的吗

([a-z])(?<!Slt)(?!TING)([A-Z])
([a-z])(?
看到了吗

这部分<代码>(?是负向后看和负向前看的组合。它们在小写字母和大写字母之间的这个位置检查左侧没有“Slt”或右侧没有“TING”

但要小心,它也不会匹配

字符串SItFOO==>字符串为SItFOO
字符串基脚==>字符串是基脚

一旦其中一个lookaround失败,字母就不会被拆分


参见

< P>你不能真正检查你是否在一个词的中间,而不是手动地把这个词与@ StEMA所做的分开。要有一个排除列表,你必须做更多的编程。

$taglist = 'TheStringIsNowCurrentlySItTING';
$excludeList = array(
    'SItTING',
    'StringIs',
);

$exclusions = implode('|', $excludeList);
$tagArr = preg_split("/($exclusions)/", $taglist, -1, PREG_SPLIT_DELIM_CAPTURE);
foreach ($tagArr as &$token) {
    if (!in_array($token, $excludeList)) {
        $token = preg_replace('/([a-z])([A-Z])/', '$1 $2', $token);
    }
}
$taglist = implode(' ', $tagArr);
  • 按你的条款把它拆开
  • 仅在未排除的术语中放置空格
  • 用空格把所有东西粘在一起

  • 非常适合我的需要!没有想到用更程序化的方式来做。非常感谢!