簡體   English   中英

兩個特定單詞之間的文本Java

[英]Text in between two specific words java

我如何在“謝謝”和“真誠”之間插入文字

String emailtext= "Dear (RECIPIENT_PREFIX) (RECIPIENT_FIRST_NAME) (RECIPIENT_LAST_NAME), 
Thank you for being a part.....................more text ......

Thank you for your time. Filling out these sections with ...more     text....      for which you are chosen.

Sincerely,

xyz
adresss"

我試過了:

String pattern = "(Thank)((.|\n)*)(?=Sincerely,)";

Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(emailtext);

if (m.find( )) {
    System.out.println("Found value:" + m.group(0));
    System.out.println("Found value:" + m.group(1));
    System.out.println("Found value:" + m.group(2));
} else {
    System.out.println("NO MATCH");
}

錯誤顯示:

java.util.regex的java.lang.StackOverflowError(java.util.regex.Pattern $ Branch.match(Pattern.java:4502)) java.util.regex上的Pattern $ GroupHead.match(Pattern.java:4556).java.util.regex.Pattern $ GroupTail.match(Pattern.java:4615)的Pattern $ GroupHead.match(Pattern.java:4683)在java.util.regex.Pattern $ BranchConn.match(Pattern.java:4466)在java.util.regex.Pattern $ CharProperty.match(Pattern.java:3694)在java.util.regex.Pattern $ Branch.match (Pattern.java:4502)在java.util.regex.Pattern $ GroupHead.match(Pattern.java:4556)在java.util.regex.Pattern $ Loop.match(Pattern.java:4683)

正確的ans應該顯示:

"Thank you for being a part.....................more text ......

Thank you for your time. Filling out these sections with ...more text.... for which you are chosen."

試試看:

String pattern = "(Thank)(.*)(?=Sincerely,)";

Pattern p = Pattern.compile(pattern,Pattern.DOTALL );
....

好吧,所以您應該檢查兩個單詞是否都出現在文本中

CharSequence s1 = "Thank";
CharSequence s2 = "Sincerely";
If (emailtext.contains(s1) && emailtext.contains(s2))

這樣它就不會拋出此類異常,那么您可以執行以下操作:

String s = emailtext.substring(emailtext.lastIndexOf("Thank"),
  emailtext.indexOf("Sincerely"));

暫無
暫無

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

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