简单的正则表达式url相关的匹配帮助

时间:2010-02-14 01:08:44

标签: regex match alphanumeric

采用以下URI:

http:\/\/.*\.google\.com/search/results\.php*

我只是尝试匹配给定URI中两个字母数字字符之间的所有单正斜杠(/)。在上面的例子中,两个就在搜索和结果之前。你能指出我正确的方向吗?

修改

目的是使用Notepad ++进行搜索和替换。

2 个答案:

答案 0 :(得分:1)

不确定你在那里做什么,因为你的“URI”似乎已经是一个正则表达式了。

但要匹配字母数字字符之间嵌入的斜杠(/),您可以使用:

/(?<=[a-zA-Z0-9]/)(?=[a-zA-Z0-9])

正面的后视和前瞻确保斜线确实在两个字母数字字符之间。

在Windows PowerShell中测试:

PS Home:\> $uri='http://stackoverflow.com/questions/2259778/simple-regex-url-related-matching-help'
PS Home:\> [regex]::matches($uri, '(?<=[a-zA-Z0-9])/(?=[a-zA-Z0-9])') | ft -auto

Groups   Success   Captures   Index   Length   Value
------   -------   --------   -----   ------   -----
{/}         True   {/}           24        1   /
{/}         True   {/}           34        1   /
{/}         True   {/}           42        1   /

ETA:如果我理解正确,您想要用\/替换两个字母数字字符之间嵌入的斜杠来逃避它们,对吗?

然后替换以下

([a-zA-Z-0-9])/([a-zA-Z-0-9])

通过

\1\\/\2

应该有效。这不会仅捕获斜杠(如上所述;由于Notepad ++的限制),因此我们也必须重新插入周围的字符。

但是,您可能还是想要搜索未转义斜杠。所以更换

([^\\])/

通过

\1\\/
我想,

会更有意义。这会搜索一个前面没有反斜杠的斜杠。

答案 1 :(得分:1)

HTTP:// .google.com /搜索/ results.php