我想从CLOB中提取整个段落,我将其转换为String,正则表达式的问题我写了
段落从附加后续详细信息开始,但问题是此语句可能有多个空格,空行或文本,可能以空格,空行,文本,*****行结束,或者#####。
的一行示例:如下所示:
1。 / *********一些空白线***** /
其他详细信息:一些文字.........一些文字...................... ..........一些文字。
2。 / *********一些空白线***** /
其他详细信息:
/ *********一些空白线***** /
一些文字.........一些文字...................... ..........一些文字
3。 / *********一些空白线***** /
其他详细信息:
/ *********一些空白线***** /
一些文字.........一些文字...................... ..........一些文字。
一些文字.......
4。 / ####### SOME TEXT ############### /
其他详细信息:
/ *********一些空白线条***** / 一些文字.........一些文字...................... ..........一些文字。
一些文字.......
行(*)**************** -
这是我到目前为止所尝试的内容: public static String getSentence(String text,String word){
final String lcword = word.toLowerCase();
return END_OF_SENTENCE.splitAsStream(text)
.filter(s -> s.toLowerCase().contains(lcword))
.findAny()
.orElse(null);
}
private static String processUpdateCmpln(String text) throws IOException{
//String lines = we.getText();
String ResultString = null;
Pattern regex = Pattern.compile("\\.*ADDITIONAL FOLLOW UP DETAILS:\\s+(.*)[\\n*]$", Pattern.DOTALL);
Matcher regexMatcher = regex.matcher(text);
if (regexMatcher.find()) {
ResultString = regexMatcher.group(1);
}
return ResultString;
}
//3609601
private static String processUpdateCmplns(String text) throws IOException{
//^.*\b(ADDITIONAL FOLLOW UP DETAILS:)\b.*$
Pattern p = Pattern.compile("(?s)ADDITIONAL FOLLOW UP DETAILS:\\s*(.*?)((?:\r?\n+|\r){2,}|$)");
Matcher m = p.matcher(text);
String ResultString = null;
while (m.find()) {
ResultString=m.group(1);
}
编辑:
一个真实的例子如下:
我需要从附加的详细信息中提取文本:到ERP 18MAR2016,请注意附加的详细信息:可能会出现不止一次
2016年3月18日12:50(GMT-4:00)由lolo添加:
请求#:98765432
相关案例TR(S)如适用:无
相互作用的原因:一些文字......
如果潜在优先权PC =是(显示为什么):否
有使用问题的产品:是的
产品更换请求(是/否,有些文字有些文字):否
其他详细信息:
一些文字..一些文字..一些文字..一些文字..一些文字..一些文字..一些文字......一些文字......一些文字......一些文字......一些文字......一些文字。 。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。有些文本。一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本。 。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。有些文本。一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本。 。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。有些文本。一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本。 。一些文字..一些文字..一些文字......有些文字xt ..一些文字..一些文字..一些文字..一些文字..一些文字..一些文字..一些文字..一些文字..一些文字..一些文字..一些文字..一些文字。 。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。有些文本。一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本。 。一些文字..一些文字..一些文字..一些文字..一些文字..一些文字......一些文字......一些文字......一些文字......一些文字..
ERP 18MAR2016
2016年3月17日12:30(格林威治标准时间-4:00)由John添加:
关注模板
请求#:1234567
相关案例TR(S)如适用:不适用
相互作用的原因:某些文字有些文字
如果潜在优先权PC =是(显示为什么):请参阅原始请求
有问题的产品:请参阅原始请求
产品更换请求(是/否,有些文字有些文字):请参阅原始要求
其他详细信息:
一些文字..一些文字..一些文字..一些文字..一些文字..一些文字..一些文字......一些文字......一些文字......一些文字......一些文字......一些文字。 。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。有些文本。一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本。 。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字..
一些文字..一些文字..一些文字..一些文字..一些文字..一些文字..一些文字......一些文字......一些文字......一些文字......一些文字......一些文字。 。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。有些文本。一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本。 。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。有些文本。一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本。 。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。部分文字。有些文本。一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本..一些文本。 。一些文字..一些文字..一些文字......有些文字xt..Some text ..
RLH 17MAR2016
答案 0 :(得分:1)
我相信你需要以下内容:
String val = "18-Mar-2016 12:50 (GMT-4:00) added by lolo :\n\nREQUEST#: 98765432\n\nRELATED CASE TR(S) IF APPLICABLE: none\n\nREASON FOR INTERACTION: Some text..\n\nIF POTENTIAL PRIORITY PC = YES (INDICATE WHY): no\n\nHAS THE PRODUCT WITH THE PROBLEM BEEN USED: yes\n\nPRODUCT REPLACEMENT REQUESTED (YES/NO, SOME TEXT SOME TEXT SOME TEXT): no\n\nADDITIONAL FOLLOW UP DETAILS:\n\nSome text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..\n\nERP 18MAR2016\n\n17-Mar-2016 12:30 (GMT-4:00) added by John:\n\nFOLLOW UP TEMPLATE\n\nREQUEST#: 1234567\n\nRELATED CASE TR(S) IF APPLICABLE: Not applicable\n\nREASON FOR INTERACTION: SOME TEXT SOME TEXT SOME TEXT\n\nIF POTENTIAL PRIORITY PC = YES (INDICATE WHY): See original request\n\nHAS THE PRODUCT WITH THE PROBLEM BEEN USED: See original request\n\nPRODUCT REPLACEMENT REQUESTED (YES/NO, SOME TEXT SOME TEXT SOME TEXT): See original request\n\nADDITIONAL FOLLOW UP DETAILS:\n\nSome text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..\n\nSome text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..Some text..\n\nRLH 17MAR2016";
String pat = "(?s)ADDITIONAL FOLLOW UP DETAILS:((?:(?!\\b[A-Z]{3}\\b).)*)\\b[A-Z]{3}\\b";
Pattern ptrn = Pattern.compile(pat);
Matcher m = ptrn.matcher(val);
while (m.find()) {
System.out.println(m.group(1).trim());
System.out.println("---- NEXT ------");
}
请参阅Java demo
这是regex demo。
请注意,您需要使用while (matcher.find())
来获得多个匹配项。
模式匹配:
ADDITIONAL FOLLOW UP DETAILS:
- 文字字符串((?:(?!\b[A-Z]{3}\b).)*)
- 第1组(matcher.group(1)
)捕获任何不是3个大写字母序列起点的字符\b[A-Z]{3}\b
- 一个前导词边界+3个大写ASCII字母+一个尾随字边界(一个完整的3个大写字母)