2

我很抱歉这么愚蠢的问题!我以前使用过正则表达式模式,但由于某种原因,我遇到了这个问题。仅匹配字符串中的第一个斜杠或 wutever:

www.blabla.com/hello/apple/apple/banana/

我试过这个:/? 但它不起作用!它仍然与其他斜线匹配!

甚至ap?匹配苹果词中的两个 ap

我在这里做错了吗?它就像?无助于帮助这种情况。我使用http://regexpal.com/来测试这一切

4

2 回答 2

5

你可以试试这个正则表达式。

^[^/]*/

这是在Powershell中的操作方法。

PS C:\Users\Someone>new-variable -name address -visibility public -value "www.blabla.com/hello/apple/apple/banana/"

PS C:\Users\Someone>$address -match "^([^/]*)(/)"    

PS C:\Users\Someone>($a, $b) = $matches[1], $matches[2] #save the previously matched group in other variable to protect them from being overwritten.
#$a has 'www.blabla.com'
#$b has '/'

PS C:\Users\Someone>$address -replace "$a$b", "$a-" 
#address now has 'www.blabla.com-hello/apple/apple/banana/' 
#                               ^see the change here.  
于 2013-10-13T22:04:22.513 回答
0

由于您使用的是使用 .NET 正则表达式的 Powershell,请尝试:

(?<!.*/.*)/

这只是一个否定的向后查找,它在匹配之前检查字符串是否有任何/字符,然后是匹配的/字符。对于 first /,不会有任何先前/的 s,因此匹配会成功,但对于后续/的 s,会有一个或多个/s,因此后向确保这些匹配将失败。

由于这是一个 .NET 正则表达式,我使用了一个 .NET 在线测试器:http ://regexstorm.net/tester 。还有其他的应该也能正常工作,这只是一个偏好问题。 不要使用http://regexpal.com/,因为它使用 JavaScript,它与 .NET 正则表达式的工作方式不同,并且不会识别负面的lookbehinds。

于 2013-10-13T22:38:29.453 回答