【发布时间】:2012-03-16 12:17:52
【问题描述】:
你好 stackoverflow 社区!
我正在尝试在 PHP 中使用基于 Positive lookbehind 的简单正则表达式。我的目标是提取 URL 中域名和一组特定字符(?或 & 或 /)之间的所有内容。我想在这些例子中提取“bar”:
-
foo.com/bar? -
foo.com/bar& foo.com/bar/
我试过了
(?<=foo\.com\/)[^/?&]+
它在the plateform test 中运行良好 但不适用于 PHP 5.3x preg_match :抛出的错误是我不能使用多个停止字符 - 它适用于一个。
我还尝试了积极的后向/前瞻组合,但问题仍然存在。 我做错了什么?
【问题讨论】:
-
您是否将正则表达式包含在分隔符内?你能告诉我们你的代码吗?
-
@M42 确定!这是:
preg_match("/(?<=foo\.com\/)[^/?&]+/", "http://www.foo.com/bar?", $result); -
您需要转义所有斜杠:
/(?<=foo\.com\/)[^\/?&]+/,包括字符类中的斜杠。 -
嗬!谢谢你的反应 42 先生!
标签: php regex lookbehind