我想编写regEx以匹配以下模式:
From: ***********************
Sent: ***********************
To: ***********************
Subject: *******************
我写了regEx为
.*From:.+(\n)Sent:.+(\n)To:.+(\n)Subject:.+(\n).*
但这是行不通的。由于我是regEx的新手,请帮助我。
由于以下两种可能的原因,您的正则表达式无法正常工作:
\r\n
,或者\r
,或者\n
(甚至更多,\u000B
,\u000C
,\u0085
,\u2028
或\u2029
),但你只能在LF编码。添加可选的CR(回车\r
)可以有所帮助。Subject:...
,没有换行符,因此您需要删除它。\R
您可以使用它来匹配任何换行序列。您可以使用
From:.+\r?\nSent:.+\r?\nTo:.+\r?\nSubject:.+
From:.+\RSent:.+\RTo:.+\RSubject:.+
搜索与的部分匹配Matcher#find()
。
和IDEONE演示:
String p = "From:.+\r?\nSent:.+\r?\nTo:.+\r?\nSubject:.+";
// String p = "From:.+\\RSent:.+\\RTo:.+\\RSubject:.+"; // Java 8+ compliant
String s = "Some text before.....\r\nFrom: ***********************\r\nSent: ***********************\r\nTo: ***********************\r\nSubject: *******************";
Pattern pattern = Pattern.compile(p);
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println(matcher.group(0));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句