gpt4 book ai didi

java - 用于查找两个字符之间的字符串的正则表达式模式 - 但第二个字符第一次出现

转载 作者:行者123 更新时间:2023-12-02 03:05:07 27 4
gpt4 key购买 nike

我想要一个正则表达式来查找两个字符之间的字符串,但仅限于从开始分隔符到第一次出现的结束分隔符

我想从以下格式的行中提取故事

<metadata name="user" story="{some_text_here}" \/>

所以我只想提取:{some_text_here}

为此,我使用以下正则表达式:

<metadata name="user" story="(.*)" \/>

和java代码:

public static void main(String[] args) throws IOException {
String regexString = "<metadata name="user" story="(.*)" \/>";
String filePath = "C:\\Desktop\\temp\\test.txt";
Pattern p = Pattern.compile(regexString);
Matcher m;
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = br.readLine()) != null) {
m = p.matcher(line);
if (m.find()) {
System.out.println(m.group(1));
}
}
}

}

这个正则表达式大部分工作正常,但令人惊讶的是,如果该行是:

<metadata name="user" story="My name is Nick" extraStory="something" />

运行代码还会过滤My name is Nick"extraStory="something因为我只想确保我得到 My name is Nick

此外,我想确保 story="My name is Nick"/> 之间实际上没有任何信息

最佳答案

<metadata name="user" story="([^"]*)" \/>

[^"]* 将匹配除 ".在这种情况下,字符串

<metadata name="user" story="My name is Nick" extraStory="something" />

不会匹配。

关于java - 用于查找两个字符之间的字符串的正则表达式模式 - 但第二个字符第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41853863/

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