gpt4 book ai didi

java 正则表达式 字符序列

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

我有一个字符串,里面有多个“消息”。 “消息”以特定的字符序列开头。我试过:

String str = 'ab message1ab message2ab message3'
Pattern pattern = Pattern.compile('(?<record>ab\\p{ASCII}+(?!ab))');
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
handleMessage(matcher.group('record'))
}

但是\p{ASCII}+贪吃一切。符号ab可以在消息内部,仅它们的顺序意味着下一条消息的开始

最佳答案

p{ASCII}+ 是一个或多个 ASCII 字符的贪婪正则表达式,这意味着它将使用最长的可能匹配。但如果您想要尽可能短的匹配,则可以使用不情愿量词:p{ASCII}+?。在这种情况下,您应该使用前瞻断言。

正则表达式可能会变成:

Pattern pattern = Pattern.compile("(?<record>ab\\p{ASCII}+?)(?=(ab)|\\z)");

请注意 (ab)|\z 以匹配最后一条消息...

关于java 正则表达式 字符序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48866168/

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