我正试图在以下模式的行中匹配某些内容: /^(.*?)\/$。然而,由于(.*?)已匹配/ ,它也会匹配任何/////////// ,但我只想匹配anything/。是否有一种好的方法来从(.*?)中排除/或其他解决方案?
使用一个否定字符类[^\/]: /^([^\/]*)\/$/ 请查看正则表达式演示 在PHP中,您可以使用其他定界符(例如 ~ )来避免模式中过度转义: $rx = '~^([^/]*)/$~'; 细节: ^ - 字符串的开头 ([^\/]*) - 第一组捕获任何除 / 之外的0个或多个字符 \/ - 一个字面意义上的 / $ - 字符串的结尾。 请注意,此否定字符类不需要使用懒惰量词 *?,因为使用贪婪量词 * 更加高效。