我试图在/^(.*?)\/$
的行中匹配某种模式。
但是,由于(.*?)
已与/
匹配,因此它也与anything///////////
匹配,但我只希望它与anything/
匹配。
有一种很好的方法可以从/
或替代解决方案中排除(.*?)
吗?
答案 0 :(得分:3)
使用negated character class [^\/]
:
/^([^\/]*)\/$/
请参阅regex demo
在PHP中,您可以使用其他分隔符避免在模式中过度使用,例如~
:
$rx = '~^([^/]*)/$~';
<强>详情:
^
- 字符串开头([^\/]*)
- 第1组捕获除/
\/
- 文字/
$
- 字符串结束。请注意,对于这个否定的字符类,您不需要延迟量词*?
,因为对于贪婪的*
,它会更有效率。
答案 1 :(得分:2)
有没有一种很好的方法可以排除/从(。*?)或替代解决方案?
使用否定的字符类:
[^\/]*?