gpt4 book ai didi

Java正则表达式,在里面查找文本

转载 作者:行者123 更新时间:2023-11-30 08:23:55 26 4
gpt4 key购买 nike

我需要在括号内的关键字第一次出现后在文本中找到一些字符串。这是文本示例:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. === FIRST KEYWORD === veniam, {{ text need to get }} ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit {{in voluptate velit esse cillum}} dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia {{deserunt mollit anim }}id est laborum

所以我需要在第一个关键字之后获取括号内的文本。

我尝试了很多组合,但最好的是我从最后一个括号而不是第一个收到了文本。有了这个 exp,我在关键字 (?<==== FIRST KEYWORD ===).(.|\n)* 之后得到了文本但是我没有成功找到括号中的第一个文本。

UPD:谢谢大家,但波希米亚人的回答不适用于我的语料库。
这个答案:

"(?<==== FIRST KEYWORD ===)[^{]*\\{\\{([^}]*)\\}\\}"

有效,但我现在看不到。所以我不能对写这篇文章的那个人说谢谢,我不记得了。

最佳答案

此代码提取您的目标:

String target = input.replaceAll("(?s).*?=== FIRST KEYWORD ===.*?\\{\\{(.*?)\\}\\}.*", "$1");

正则表达式的重要部分是使用reluctant 量词.*?,它将在第一个可用的匹配项停止消耗输入(而不是跳过它到随后的比赛)。

编辑:

请注意(感谢 @guido 指出这一点)已添加 dotall 标志 (?s),这允许点匹配跨行运行- 使用多行输入时需要。


一些测试代码,使用示例的缩写形式:

String input = "one two === FIRST KEYWORD === three {{xxx}} four {{yyy}} five";
String target = input.replaceAll("(?s).*?=== FIRST KEYWORD ===.*?\\{\\{(.*?)\\}\\}.*", "$1");
System.out.println(target);

输出:

xxx

关于Java正则表达式,在里面查找文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23312339/

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