gpt4 book ai didi

java正则表达式解析部分标题标签

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

好的,快速提问。我是 Java 的新手,我有一个作业,其中我必须从页面的标题标签中获取人名。我知道我的正则表达式,但我无法(或不知道如何)转义某些字符。

示例

<title>Mr. Somebody | Department in which he's in</title>

所以,基本上我需要一个正则表达式来让我得到“Mr. Somebody”。我已经尝试过:

Pattern pat = Pattern.compile("<title>(.+?)|");                               
Matcher mat = pat.matcher(data);
boolean found = false;
while (!found && mat.find()) {
name = mat.group(0);
found = true;
}
System.out.println("Found a name : " + name);

我的问题是,无论我尝试什么,我最多只能得到第一个角色。您认为使用indexOf和子字符串的更简单的方法会更好吗?或者正则表达式仍然可行吗?

我知道通常正则表达式不适合解析 html 标签,但我认为此搜索更多的是字符串搜索,因为我对整个标签(或可能包含在其中的其他标签)不感兴趣。

非常感谢任何形式的帮助:)

最佳答案

您需要转义管道,因为它是正则表达式中具有特殊含义的字符。尝试:

<title>(.+?)\\|

|表示“或”,这意味着正则表达式将尝试与 <title>(.+?) 匹配。或什么都没有( | 之后什么都没有。

当它尝试与 <title>(.+?) 匹配时,它只会获得第一个字符,因为 .+?是懒惰的(它尽可能少地匹配)。

或者,您可以使用否定类:

<title>([^\\|]+)

[^\\|]+将匹配除管道符之外的任何字符。

关于java正则表达式解析部分标题标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19197922/

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