gpt4 book ai didi

java - 正则表达式捕获第一个冒号 : and the last square brackets having colon : in it 之间的单词

转载 作者:行者123 更新时间:2023-12-02 01:34:50 25 4
gpt4 key购买 nike

我有一个要解析的字符串。字符串是这样的:-

00:0qwe8.0 donald controller duck [02009&123@##]: Some more sring here Model number 420 Family [Super-cool] [15b31013^^@#][15b:31013]

请注意最后一个方括号中有一个 : 冒号。 Some More 之前的字符也是冒号。我想捕捉他们之间的所有角色。

目前我正在用以下正则表达式分两步解析它。这是java代码。

class JavaReg{

public static void main(String[] args){

String str = "00:0qwe8.0 donald controller duck [02009&123@##]: Some more sring here Model number 420 Family [Super-cool] [15b31013^^@#][15b:31013]";
String[] strArr = str.split("\\[.*?\\]\\:\\s");
String[] str12 = strArr[1].split("\\[\\w*?\\:.*");
for(String strinj : strArr)
System.out.println(strinj);

System.out.println(str12[0]);
}

}

以下是上述练习的结果。

00:0qwe8.0 donald controller duck
Some more sring here Model number 420 Family [Super-cool] [15b31013^^@#][15b:31013]
Some more sring here Model number 420 Family [Super-cool] [15b31013^^@#]

最后一个字符串就是我想要的。它从冒号 : 开始捕获,然后继续捕获直到有冒号的方括号。

问题是我可以使用正则表达式中的捕获组一次性捕获它。如何在 Java 中做到这一点?

最佳答案

您可以使用以下正则表达式来提取匹配项:

\[[^\]\[]*\]:\s*(.*?)\[\w*:

请参阅regex demo .

详细信息

  • \[ - 一个 [ 字符
  • [^\]\[]* - 除 ][ 之外的 0+ 个字符
  • \]: - ]: 子字符串
  • \s* - 0+ 个空格
  • (.*?) - 第 1 组:除换行符之外的任何 0 个或多个字符,尽可能少
  • \[ - [ 字符
  • \w* - 0+ 个字母、数字或 _
  • : - 冒号。

将其与 Matcher#find() 一起使用并获取 matcher.group(1),请参阅 Java demo :

String str = "00:0qwe8.0 donald controller duck [02009&123@##]: Some more sring here Model number 420 Family [Super-cool] [15b31013^^@#][15b:31013]";
Pattern pattern = Pattern.compile("\\[[^\\]\\[]*\\]:\\s*(.*?)\\[\\w*:");
Matcher matcher = pattern.matcher(str);
while (matcher.find()){
System.out.println(matcher.group(1));
}
// => Some more sring here Model number 420 Family [Super-cool] [15b31013^^@#]

关于java - 正则表达式捕获第一个冒号 : and the last square brackets having colon : in it 之间的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55375792/

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