用于提取url的正则表达式

时间:2013-07-10 07:30:24

标签: regex

我有一个网址: http://example.com/(S(4txk2wasxh3u0slptzi20qyj))/CWC_Link.aspx

但我只想提取这部分: (S(4txk2anwasxh3u0slptzi20qyj))/

拜托,有人可以建议我使用正则表达式吗

3 个答案:

答案 0 :(得分:1)

关键是要注意()个字符标记边界,内容中没有/个字符:

/(\(S\([^/()]+\)\))/

答案 1 :(得分:0)

这是你的正则表达式。大括号中的部分将提取所需的片段

/^.+\/([^\/]+)\/.+$/

基本上,逻辑很简单: ^ - 标记字符串的开头

.+\/ - 匹配下一部分之前的所有符号。正则表达式的这一部分是考虑到正则表达式的默认“贪婪”行为,所以此部分与示例中的http://farmer.gov.in/匹配

([^\/]+) - 匹配两个斜杠之间的所有符号

\/.+$ - 匹配所有符号,直到字符串结尾

PHP语言示例:

<?php
$string = "http://farmer.gov.in/(S(4txk2wasxh3u0slptzi20qyj))/CWC_Link.aspx";
$regex = "/^.+\/([^\/]+)\/.+$/";
preg_match($regex, $string, $matches);
var_dump($matches);
?>

在输出$matches[1]中,您将获得所需的值(S(4txk2wasxh3u0slptzi20qyj))

答案 2 :(得分:0)

这个正则表达式完成了这项工作:

\(.*\)\/

只需匹配一个左括号,然后匹配任何东西,直到带有正斜杠的结束括号。