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,您可以补充一些解释,说明为什么它之前不起作用吗?(即,在我的代码中)