gpt4 book ai didi

java - 正则表达式获取两个冒号之间的值,不包括冒号

转载 作者:行者123 更新时间:2023-12-02 15:17:36 24 4
gpt4 key购买 nike

我有这样一个字符串:

something:POST:/some/path

现在我想从字符串中单独获取 POST。我通过使用这个正则表达式来做到这一点

:([a-zA-Z]+):

但这给了我一个值和冒号。即我明白了:

:POST:

但是我需要这个

POST

我的匹配和替换代码如下:

String ss = "something:POST:/some/path/";
Pattern pattern = Pattern.compile(":([a-zA-Z]+):");
Matcher matcher = pattern.matcher(ss);

if (matcher.find()) {
System.out.println(matcher.group());
ss = ss.replaceFirst(":([a-zA-Z]+):", "*");
}
System.out.println(ss);

编辑:

我决定使用前瞻/后视正则表达式,因为我不想使用带有冒号的 replace,例如 :*:。这是我的最终解决方案。

String s = "something:POST:/some/path/";
String regex = "(?<=:)[a-zA-Z]+(?=:)";

Matcher matcher = Pattern.compile(regex).matcher(s);

if (matcher.find()) {
s = s.replaceFirst(matcher.group(), "*");
System.out.println("replaced: " + s);
}
else {
System.out.println("not replaced: " + s);
}

最佳答案

有两种方法:

  • 保留您的 Java 代码,并使用前瞻/后视 (?<=:)[a-zA-Z]+(?=:) , 或
  • 更改您的 Java 代码以将结果替换为 ":*:"

注意:您可能想要定义一个 String正则表达式的常量,因为您在不同的调用中使用它。

关于java - 正则表达式获取两个冒号之间的值,不包括冒号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39345252/

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