【发布时间】:2017-05-22 23:08:50
【问题描述】:
我正在尝试在/^(.*?)\/$ 的行中匹配某种模式。
但是,由于 (.*?) 已经匹配 / 它也匹配 anything/////////// 但我只希望它匹配 anything/。
有没有从(.*?) 或替代解决方案中排除/ 的好方法?
【问题讨论】:
我正在尝试在/^(.*?)\/$ 的行中匹配某种模式。
但是,由于 (.*?) 已经匹配 / 它也匹配 anything/////////// 但我只希望它匹配 anything/。
有没有从(.*?) 或替代解决方案中排除/ 的好方法?
【问题讨论】:
使用negated character class[^\/]:
/^([^\/]*)\/$/
在 PHP 中,您可以使用其他分隔符避免在模式中过度转义,例如 ~:
$rx = '~^([^/]*)/$~';
详情:
^ - 字符串开头([^\/]*) - 第 1 组捕获除 / 之外的 0+ 个字符
\/ - 文字 /
$ - 字符串结束。请注意,您不需要带有此否定字符类的惰性量词 *?,因为使用贪婪量词 * 会更有效。
【讨论】:
有没有一种很好的方法可以将 / 从 (.*?) 或替代解决方案中排除?
使用否定字符类:
[^\/]*?
【讨论】: