繁体   English   中英

在空白行之间匹配文本

[英]Match text between empty lines

我在以下块中有一个文本:

AAAAAAA
BBBBBBB
CCCCCCC

DDDDDD.    YYYYYYYYYYYYYYYYYYYYYY                
EEEEE 1234567890                              

Some random text
Some text random
Random text
Text 
Some random text

ZZZZZZZZZZZZZZZZ
UUUUUUUUUUUUUUUU

如何使用regexp选择以下

Some random text
Some text random
Random text
Text 
Some random text

从原始文本中,我知道此位于DDDDDD. YYYYYYYYYYYYYYYYYYYYYY行之后DDDDDD. YYYYYYYYYYYYYYYYYYYYYY DDDDDD. YYYYYYYYYYYYYYYYYYYYYY ,其后是EEEEE 1234567890行,并且该位于仅包含\\ s符号的行之间。

我尝试了模式DDDDDD.*\\\\s+(.*)\\\\s+它不起作用。

您可以使用以下Pattern来匹配所需的文本:

String text = "AAAAAAA\nBBBBBBB\nCCCCCCC\n\nDDDDDD.    YYYYYYYYYYYYYYYYYYYYYY                "
    + "\nEEEEE 1234567890                              "
    + "\n\nSome random text\nSome text random\nRandom text\nText \nSome random text\n\n"
    + "ZZZZZZZZZZZZZZZZ\nUUUUUUUUUUUUUUUU";
Pattern p = Pattern.compile(
 // | 6 "D"s
 // |    | actual dot
 // |    |  | some whitespace
 // |    |  |   | 22 "Y"s
 // |    |  |   |    | more whitespace
 // |    |  |   |    |   | optional: 
 // |    |  |   |    |   || 5 "E"s
 // |    |  |   |    |   ||   | whitespace
 // |    |  |   |    |   ||   |  | 10 digits
 // |    |  |   |    |   ||   |  |      | more whitespace including line breaks
 // |    |  |   |    |   ||   |  |      |      | your text
 // |    |  |   |    |   ||   |  |      |      |    | followed by any "Z" sequence
    "D{6}\\.\\s+Y{22}\\s+(E{5}\\s\\d{10}\\s+)?(.+?)(?=Z+)", 
    Pattern.DOTALL
);
Matcher m = p.matcher(text);
if (m.find()) {
    System.out.println(m.group(2));
}

产量

Some random text
Some text random
Random text
Text 
Some random text

注意

不知道如何定界最后一部分,所以我只使用了大写的Z序列(1+)。

由您来完善。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM