我必须解析返回的电子邮件以获取特定的对象 ID。问题是,当电子邮件返回时,id 可能会被分成几行。通常它应该是这样的:
foo#bar-20130101-103000#12345
我对最后一部分“12345”感兴趣。问题是该字符串往往被换行符分割,例如:
foo#bar-20130101-103000#12
345
这会导致我的正则表达式
[a-zA-Z0-9äöüÄÖÜß]{1,5}#[a-zA-Z0-9äöüÄÖÜß]{1,5}-\d{8}-\d{6}#(\d+)
仅查找“12”而不是“12345”。现在我在网上找到的所有提示都是使用 Pattern.MULTILINE 和/或 Pattern.DOTALL,但 multiline 只影响 ^ 和 $ anchor ,而 dotall 只影响 .也匹配换行符。问题是我没有 .在这里,它也不太适用,因为我只想要数字。 那么我怎样才能让我的正则表达式匹配整个事情而不是在换行符处停止呢?
最佳答案
[\d\r\n]
将匹配数字或新行,因此请尝试使用 ([\d\r\n]+)
。
关于Java正则表达式在没有Dotall的情况下忽略换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19948281/