簡體   English   中英

Java正則表達式字符序列

[英]java regex char sequence

我有一個帶有多個“消息”的字符串。 “消息”以某些字符序列開頭。 我試過了:

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以匹配最后一條消息...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM