簡體   English   中英

RegEx提取Java標簽之間的文本

[英]RegEx to extract text between tags in Java

我需要使用RegEx在以下文本文件中提取:70:之后的值。 值也可能包含換行符。

我當前的解決方案是提取:70::之間的字符串,但這總是只返回一個匹配項,即第一個:70:和last :之間的整個文本。

:32B:xxx,
:59:yyy
something
:70:ACK1
ACK2
:21:something
:71A:something
:23E:something
value
:70:ACK2
ACK3
:71A:something

如何使用Java實現此目的? 理想情況下,我想遍歷所有值,即

ACK1\\nACK2ACK2\\nACK3

謝謝 :)

編輯:我現在在做什么,

Pattern pattern = Pattern.compile("(?<=:70:)(.*)(?=\n)", Pattern.DOTALL);
Matcher matcher = pattern.matcher(data);
while (matcher.find()) {
   System.out.println(matcher.group())
}

嘗試這個。

String data = ""
    + ":32B:xxx,\n"
    + ":59:yyy\n"
    + "something\n"
    + ":70:ACK1\n"
    + "ACK2\n"
    + ":21:something\n"
    + ":71A:something\n"
    + ":23E:something\n"
    + "value\n"
    + ":70:ACK2\n"
    + "ACK3\n"
    + ":71A:something\n";
Pattern pattern = Pattern.compile(":70:(.*?)\\s*:", Pattern.DOTALL);
Matcher matcher = pattern.matcher(data);
while (matcher.find())
    System.out.println("found="+ matcher.group(1));

結果:

found=ACK1
ACK2
found=ACK2
ACK3

您需要執行一個循環。

Pattern p = Pattern.compile(regexPattern);
List<String> list = new ArrayList<String>();
Matcher m = p.matches(input);
while (m.find()) {
    list.add(m.group());
}

如此處所示, 創建正則表達式匹配數組

暫無
暫無

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

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