[^.]+.]+>"); 和 Pattern.-6ren">
gpt4 book ai didi

Java正则表达式点与真正的点字符(.)不匹配

转载 作者:行者123 更新时间:2023-11-30 02:40:01 26 4
gpt4 key购买 nike

我正在练习解析 XML。

我的句子是

<SINGER>I.O.I</SINGER> came back on <MONTH>May</MONTH> 4, <YEAR>2016</YEAR>.

我都用过

Pattern.compile("<[^/^>.]+>[^<^>.]+</[^>.]+>");

Pattern.compile("<[^/^>.]+>[^<^>\\..]+</[^>.]+>");

但是,正则表达式无法匹配

<SINGER>I.O.I</SINGER>

我认为我的正则表达式由于这些点而表现得很奇怪,因为它们可以匹配

<SINGER>I-O-I</SINGER>

我应该做什么?

谢谢。

最佳答案

模式<[^/^>.]+>[^<^>.]+</[^>.]+>意思是:

  1. <
  2. / 之外的一个或多个字符^ >.
  3. >
  4. < 之外的一个或多个字符^ > .
  5. </
  6. > 之外的一个或多个字符.
  7. >

所以它不会匹配 <SINGER>I.O.I</SINGER>

您可能想要类似 <[^>]+>[^<]*</[^>]+> 的东西作为一种从 XML 标记中提取数据的快速而简单的方法。

那么你需要使用PatternMatcher正确地:

    Pattern p = Pattern.compile("<[^>]+>([^<]*)</[^>]+>");
Matcher m = p.matcher("<SINGER>I.O.I</SINGER> came back on <MONTH>May</MONTH> 4, <YEAR>2016</YEAR>.");
while (m.find()) {
System.out.println(m.group(1));
}

将打印:

I.O.I
May
2016

关于Java正则表达式点与真正的点字符(.)不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42038455/

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