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

时间:2017-01-08 17:03:30

标签: php regex pcre

我试图在/^(.*?)\/$的行中匹配某种模式。 但是,由于(.*?)已与/匹配,因此它也与anything///////////匹配,但我只希望它与anything/匹配。

有一种很好的方法可以从/或替代解决方案中排除(.*?)吗?

2 个答案:

答案 0 :(得分:3)

使用negated character class [^\/]

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

请参阅regex demo

在PHP中,您可以使用其他分隔符避免在模式中过度使用,例如~

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

<强>详情:

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

请注意,对于这个否定的字符类,您不需要延迟量词*?,因为对于贪婪的*,它会更有效率。

答案 1 :(得分:2)

  

有没有一种很好的方法可以排除/从(。*?)或替代解决方案?

使用否定的字符类:

[^\/]*?
相关问题