【问题标题】:Regex to Find and Replace url does not work or how to make it work正则表达式查找和替换 url 不起作用或如何使其起作用
【发布时间】:2012-05-14 10:33:32
【问题描述】:

使用Regex Hero 是输入:

正则表达式:/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/

预期网址

http://google.co.in/blah_blah_blah/domainname.com/experiment/wp/

我如何获得预期的 URL,我的正则表达式有问题吗?

【问题讨论】:

  • 你为什么不把/category/替换成/experiment/
  • @m0skit0 在category/ 之后可以出现任何东西,这使得使用* 很重要
  • 您需要不带斜线的正则表达式category
  • 我明白这一点,但奥卡姆剃刀法则:为什么要寻找复杂的解决方案而使用更简单的解决方案?我的建议对你所说的仍然有效,而且更简单。通过按我说的替换,你仍然可以得到斜杠后面的内容,因为字符串的那部分没有被修改。
  • @kuh-chan 如果 /category/ 之后的 url 包含字母 category 将不起作用

标签: regex wordpress url replace


【解决方案1】:

尝试正则表达式:

/category/(.*)

在正则表达式中,. 是通配符,* 是“0 或更多”限定符。因此,在正斜杠后匹配0个或多个(*)字符(.)应表示为.*

替换:

/experiment/$1

$0 是一个包含整个匹配项的“伪组”,即“/category/...”。您需要使用括号来定义其他组,以便您可以在替换模式中引用这些组,因此正则表达式中的 (.*) 部分。

【讨论】:

  • @Penchi 你能补充一些解释为什么它不能更早地工作吗?(即在我的代码中)
【解决方案2】:

您需要更改正则表达式:

/category/([^/]+)

这将匹配到下一个斜线的所有内容。请注意,我还用括号将其包裹在 capture 中。或者,如果您只想要/category/ 之后的所有内容,请使用:

/category/(.*)

然后您需要将替换更改为:

/experiment/$1

$1 是第一个匹配项。

这会导致:

http://google.co.in/blah_blah_blah/domainname.com/experiment/wp/

【讨论】:

    猜你喜欢
    • 2016-03-09
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    相关资源
    最近更新 更多