[英]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}+
貪婪無所不能。 符號a
, b
只能在消息內部,其順序表示下一條消息的開始
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.