gpt4 book ai didi

Java正则表达式仅替换部分字符串(url)

转载 作者:行者123 更新时间:2023-12-02 09:06:20 25 4
gpt4 key购买 nike

我只想替换字符串的数字部分。大多数情况下,它要么是完整的 URL,要么是 URL 的一部分,但也可以是普通字符串。

  • /users/12345 变为 /users/XXXXX
  • /users/234567/summary 变为 /users/XXXXXX/summary
  • /api/v1/summary/5678 变为 /api/v1/summary/XXXX
  • http://example.com/api/v1/summary/5678/single 变为 http://example.com/api/v1/summary/XXXX/single

请注意,我没有将 1 替换为 /api/v1

到目前为止,我只有以下似乎在大多数情况下都有效的方法:

input.replaceAll("/[\\d]+$", "/XXXXX").replaceAll("/[\\d]+/", "/XXXXX/");

但这有两个问题:

  • 替换大小与原始字符串长度不匹配。
  • 替换字符是硬编码的。

有更好的方法吗?

最佳答案

在 Java 中你可以使用:

str = str.replaceAll("(/|(?!^)\\G)\\d(?=\\d*(?:/|$))", "$1X");

RegEx Demo

正则表达式详细信息:

  • \G在上一个匹配的末尾或第一个匹配的字符串的开头断言位置。
  • (/|(?!^)\\G) :匹配/或捕获组 #1 中上一场比赛的结束(但不是开始时)
  • \\d :匹配数字
  • (?=\\d*(?:/|$)) :确保数字后跟 /或结束。
  • 更换: $1X :将其替换为捕获组 #1,后跟 X

关于Java正则表达式仅替换部分字符串(url),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60711586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com