[英]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.