正则表达式:(.*?) 匹配除一个字符以外的任何内容

3
我正试图在以下模式的行中匹配某些内容: /^(.*?)\/$。然而,由于(.*?)已匹配/ ,它也会匹配任何/////////// ,但我只想匹配anything/
是否有一种好的方法来从(.*?)中排除/或其他解决方案?
2个回答

3

使用一个否定字符类[^\/]

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

请查看正则表达式演示

在PHP中,您可以使用其他定界符(例如 ~ )来避免模式中过度转义:

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

细节:

  • ^ - 字符串的开头
  • ([^\/]*) - 第一组捕获任何除 / 之外的0个或多个字符
  • \/ - 一个字面意义上的 /
  • $ - 字符串的结尾。

请注意,此否定字符类不需要使用懒惰量词 *?,因为使用贪婪量词 * 更加高效。


1
是的,太棒了!将其作为答案接受 :) - KaekeaSchmear

2
有没有一种好的方法来排除 / 从 (.*?) 或其他替代方案?
使用否定字符类:

例如:

[^\/]*?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接