我正在尝试在文本中查找所有部分(并用其他内容替换)

  • 以'/'开头
  • 以'/'结尾
  • 两者之间的
  • 除了字符串“。”之外,什么都可以。和 '..'。

  • (对于您的信息,我正在搜索并替换目录和文件名,因此应排除“。”和“..”。)

    这是我想出的正则表达式:
    /(?!\.|\.\.)([^/]+)/
    

    第二部分
    ([^/]+)
    

    匹配每个字符序列,但不包括'/'。不需要字符限制,我只是在解释输入内容。

    第一部分
    (?!\.|\.\.)
    

    使用否定的超前断言来排除字符串“。”。和 '..'。

    但是,这似乎在mb_ereg_replace()的PHP中不起作用。

    有人可以帮我吗?我看不到我的正则表达式有什么问题。

    谢谢你。

    最佳答案

    POSIX正则表达式可能不支持否定先行。 (我可能是错的)

    无论如何,由于PCRE regex通常比POSIX快,我认为您可以使用同一功能的PCRE版本,因为PCRE还支持utt8并使用u标志。

    考虑以下代码作为替代:

    preg_replace('~/(?!\.|\.\.)([^/]+)/~u', "", $str);
    

    编辑:更好的是使用:
    preg_replace('~/(?!\.)([^/]+)/~u', "", $str);
    

    10-02 07:46
    查看更多