我有这样的邮件内容:
By: example@abc.com (could also be a username)
Subject: Test
Message: This is a test message
然后我将此javax.Message转换为带有(String) getContent()
的字符串。
现在我需要解析 By:部分。在示例中,我需要获取 example@abc.com 。但我无法使用正则表达式搜索电子邮件,因为按:部分也可能是用户名...所以我需要搜索 By:所在的位置并阅读整个下文。但我不知道如何做到这一点。
那我怎么能阅读 By:内容?
答案 0 :(得分:2)
我认为通过这种方式你可以在不使用正则表达式的情况下获得它 -
...
int begIndex = yourString.indexOf("By:")+3;
int endIndex = yourString.indexOf("Subject:");
yourString.substring(benIndex,endIndex);
现在您可以修剪结果字符串以获得所需的字符串值。
答案 1 :(得分:0)
您可以按照以下方式执行此操作:
(?<=By: )((\w+)(@(\w+)\.(\w+))?)
这使用正向lookbehind并仅在第'By: '
之前匹配第二组
也适用于用户名。
这是一个演示:
希望有所帮助
答案 2 :(得分:0)
试试这个例子。它将解析By
之后的所有文本,直到换行符(假设By
不在最后一行)。
String mailText = ".....";
Pattern pattern = Pattern.compile("(?<=[\n\r]|^)By:[ ]+(.*?)[\n\r]"); // assume By will not be at the last line
Matcher m = pattern.matcher(mailText);
while (m.find()) {
System.out.println(m.group(1));
}
使用正向lookbehind (?<=[\n\r]|^)
正则表达式检查字符串开头的By
或新行字符后是否。{/ p>