[英]Text in between two specific words java
How can i get sting text in between "Thank" and "Sincerely," 我如何在“谢谢”和“真诚”之间插入文字
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"
I tried: 我试过了:
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");
}
error shows: 错误显示:
java.lang.StackOverflowError at java.util.regex.Pattern$CharProperty.match(Pattern.java:3692) at java.util.regex.Pattern$Branch.match(Pattern.java:4502) at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556) at java.util.regex.Pattern$Loop.match(Pattern.java:4683) at java.util.regex.Pattern$GroupTail.match(Pattern.java:4615) at java.util.regex.Pattern$BranchConn.match(Pattern.java:4466) at java.util.regex.Pattern$CharProperty.match(Pattern.java:3694) at java.util.regex.Pattern$Branch.match(Pattern.java:4502) at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556) at java.util.regex.Pattern$Loop.match(Pattern.java:4683)
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)
Correct ans should show : 正确的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."
give this a try: 试试看:
String pattern = "(Thank)(.*)(?=Sincerely,)";
Pattern p = Pattern.compile(pattern,Pattern.DOTALL );
....
Well so you should check that both of the words are present in the text with 好吧,所以您应该检查两个单词是否都出现在文本中
CharSequence s1 = "Thank";
CharSequence s2 = "Sincerely";
If (emailtext.contains(s1) && emailtext.contains(s2))
So that it can't throw an exception of that kind, then, you can just do: 这样它就不会抛出此类异常,那么您可以执行以下操作:
String s = emailtext.substring(emailtext.lastIndexOf("Thank"),
emailtext.indexOf("Sincerely"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.