gpt4 book ai didi

java - 正则表达式分组

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

这是我的问题:

我有一个很长的字符串,其中有很多由不同标签界定的值。这些值包括中文、英文措辞和数字。

我想按指定模式分隔。下面是一个例子:(我想找到一个模式xxxxxx,其中xxxx是中文、英文、数字或任何符号,但不包括“<”或“>”,因为这两个符号用于识别标签)

但是,我发现这些模式有些奇怪。该模式似乎没有识别前两个 tag() 但第二个

String a = "<f\"number\">4  <f\"number\"><f$n0>14   <h85><f$n0>4    <f$n0>2 <f$n0>2 7   -<f\"Times-Roman\">7<f\"number\">";
Pattern p = Pattern.compile("<f\"number\">[\\P{sc=Han}*\\p{sc=Han}*[a-z]*[A-Z]*[0-9]*^<>]*<f\"number\">");
Matcher m = p.matcher(a);

while(m.find()){
System.out.println(m.group());
}

输出与我的字符串a相同

最佳答案

字符类[\\P{sc=Han}*\\p{sc=Han}*[a-z]*[A-Z]*[0-9]*^<>]*匹配 0 个或多个任意字符,因为 \\P{sc=Han}\\p{sc=Han}是相反的。

我猜你想要:

Pattern p = Pattern.compile("<f\"number\">[\\P{sc=Han}a-zA-Z0-9]*<f\"number\">");

您可能需要添加空格:

Pattern p = Pattern.compile("<f\"number\">[\\P{sc=Han}a-zA-Z0-9\s]*<f\"number\">");

或者:

Pattern p = Pattern.compile("<f\"number\">[^<]*<f\"number\">");

关于java - 正则表达式分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41677223/

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