Regex 查找和替换url的正则表达式不起作用,或者如何使其起作用
这里使用的是输入: 正则表达式:Regex 查找和替换url的正则表达式不起作用,或者如何使其起作用,regex,wordpress,url,replace,Regex,Wordpress,Url,Replace,这里使用的是输入: 正则表达式:/category/* 替换字符串:/experiment/$0 目标字符串:http://google.co.in/blah_blah_blah/domainname.com/category/wp/ 最后一个字符串:http://google.co.in/blah_blah_blah/domainname.com/experiment//category/wp/ 预期Url http://google.co.in/blah_blah_blah/domainna
/category/*
替换字符串:/experiment/$0
目标字符串:http://google.co.in/blah_blah_blah/domainname.com/category/wp/
最后一个字符串:http://google.co.in/blah_blah_blah/domainname.com/experiment//category/wp/
预期Url
http://google.co.in/blah_blah_blah/domainname.com/experiment/wp/
如何获取预期的URL,我的正则表达式中是否有错误?请尝试正则表达式:
/category/(.*)
在正则表达式中,
是通配符,*
是“0或更多”限定符。因此,在正斜杠后匹配0个或更多(*
)字符(
)应表示为*
替换:
/experiment/$1
$0是保存整个匹配项的“伪组”,即“/category/…”。您需要使用括号来定义其他组,以便在替换模式中引用这些组,因此正则表达式中的
(.*)
部分。您需要更改正则表达式:
/category/([^/]+)
这将匹配到下一个斜杠的所有内容。注意,我还将其用括号括起来,以捕获它。或者,如果您只想要/category/
之后的所有内容,请使用:
/category/(.*)
然后,您需要将替换项更改为:
/experiment/$1
$1
是第一个匹配项
这导致:
http://google.co.in/blah_blah_blah/domainname.com/experiment/wp/
为什么不用/experience/
替换/category/
?@m0skit0好吧,在类别/
之后,任何东西都可以出现,这就说明了使用*
的重要性。您需要正则表达式类别
,而不需要我明白这一点,但奥卡姆的剃刀:为什么要寻找一个复杂的解决方案,而一个更简单的解决方案呢?我的建议对你所说的仍然有效,而且更简单。如我所说,通过替换,您仍然可以得到斜杠后面的内容,因为字符串的这一部分没有被修改。@kuh chan如果/category/
后面的url包含字母category
@Penchi,您可以补充一些解释,说明为什么它之前不起作用吗?(即,在我的代码中)