【问题标题】:RegExp replace after正则表达式替换后
【发布时间】:2013-04-05 13:20:33
【问题描述】:

我有一些链接模板,我需要替换这些链接中的子字符串。 链接模板:

  1. “/all_news”
  2. "/all_news/"
  3. “/all_news/page1”
  4. "/all_news/page1/"

所有这些模板的含义相同——新闻页面的第一页没有过滤。

所以我需要:

第一个模板 - 插入“/pageX”

第二个模板 - 插入“pageX”

第 3 和第 4 个模板 - 替换页码

只有一个正则表达式可以吗?

如果是,请帮助我。

如果不是,那么我有第二个问题: 也许可以替换“/pageX”上“/all_news”之后的所有内容?

我的意思是下一个逻辑:

  1. 字符串开始
  2. 好的,我看到子字符串“/all_news”
  3. 即使不存在任何内容,我也会替换“/all_news”之后的所有内容(如果字符串以“/all_news”结尾)
  4. 我返回“/all_news/pageX”。

【问题讨论】:

    标签: regex insert replace


    【解决方案1】:

    这样就可以了。

    '/all_news/page1'.replace(/(.*\/all_news).*/,'$1' + '/pageX');
    

    只有一个。

    Java 具有后视功能。它否定了对 1 美元的需求。解决方案如下:

    String result = "/all_news/page1";
    String pattern = "(?<=\\/all_news).*";
    System.out.println(result.replaceAll(pattern,"/PageX"));
    

    干杯。

    【讨论】:

    • 你没有说是哪种语言……这是 JavaScript。但是正则表达式 /(.*\/all_news).*/ 应该可以在任何地方使用(只需稍作改动)和 $1 构造。此外,所有主要语言都有类似的替换功能。
    • awwwww...大声笑...我选择了艰难的方式,但比我想象的要容易
    • 是的,我很高兴你喜欢它 :) 如果它真的有效......(我永远无法确定)你认为你能找到时间吗?勾选答案?
    • 它有效,但我认为“/all_news”不会被触及。我认为可以在不替换的情况下定义子字符串。
    • 您不会在替换中丢失“/all_news” - 这就是 $1 所做的 - 如果您不想使用 $1,您可以使用前瞻 - 甚至后瞻。使用 $1 有问题吗?
    猜你喜欢
    • 1970-01-01
    • 2019-01-24
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    相关资源
    最近更新 更多