php - RegEx (.*?) 除了一个字符之外的任何东西

标签 php regex pcre

我正在尝试将某些内容与 /^(.*?)\/$ 行之间的模式相匹配。 但是,由于 (.*?) 已经匹配 / 它也匹配 anything////////// 但我只希望它匹配 anything/

是否有从 (.*?) 或其他解决方案中排除 / 的好方法?

最佳答案

使用 negated character class [^\/]:

/^([^\/]*)\/$/

参见 regex demo

在 PHP 中,您可以使用其他一些分隔符来避免模式中的过度转义,比如 ~:

$rx = '~^([^/]*)/$~';

详细信息:

  • ^ - 字符串的开始
  • ([^\/]*) - 第 1 组捕获除 /
  • 以外的 0+ 个字符
  • \/ - 文字 /
  • $ - 字符串结尾。

请注意,对于这个取反字符类,您不需要惰性量词 *?,因为使用贪婪量词 * 会更有效率。

关于php - RegEx (.*?) 除了一个字符之外的任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41535318/

相关文章:

Python 正则表达式 : Search and replace a character except when outside braces

php - 匹配不同值的 RegEx BackReference

regex - 正则表达式中 "lookbehind assertion MUST be fixed length"的技术原因是什么?

php - 如何验证国家和州/省的名称和邮政编码?

php - WordPress 手册根据 postmeta 列值选择 MySQL

php - 显示来自 mysql 的搜索结果

regex - 删除第一级 block

php - CakePHP2 : CORS Preflight issues with JWT Auth

java正则表达式可选字符

正则表达式以匹配主机请求