我正在尝试将某些内容与 /^(.*?)\/$
行之间的模式相匹配。
但是,由于 (.*?)
已经匹配 /
它也匹配 anything//////////
但我只希望它匹配 anything/
。
是否有从 (.*?)
或其他解决方案中排除 /
的好方法?
最佳答案
使用 negated character class [^\/]
:
/^([^\/]*)\/$/
参见 regex demo
在 PHP 中,您可以使用其他一些分隔符来避免模式中的过度转义,比如 ~
:
$rx = '~^([^/]*)/$~';
详细信息:
^
- 字符串的开始([^\/]*)
- 第 1 组捕获除/
以外的 0+ 个字符
\/
- 文字/
$
- 字符串结尾。
请注意,对于这个取反字符类,您不需要惰性量词 *?
,因为使用贪婪量词 *
会更有效率。
关于php - RegEx (.*?) 除了一个字符之外的任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41535318/