我必须为特定的对象ID解析返回的电子邮件。问题是,当返回电子邮件时,id可以分成几行。通常它应该是这样的:
foo#bar-20130101-103000#12345
whereat我对最后一部分“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,但是多行只会影响^和$ anchors,而dotall只会影响。也适用于换行符。问题是我没有。这里也不是真的适用,因为我只想要数字。 那么我怎么能让我的正则表达式匹配整个事情而不是停在换行符?
答案 0 :(得分:0)
由于您的号码最终可以尝试:
"(?s)^[a-zA-Z0-9äöüÄÖÜß]{1,5}#[a-zA-Z0-9äöüÄÖÜß]{1,5}-\d{8}-\d{6}#(.*)$"
即。使用#
DOTALL
后的所有内容
以下内容也可以在没有DOTALL
的情况下使用:
"^[a-zA-Z0-9äöüÄÖÜß]{1,5}#[a-zA-Z0-9äöüÄÖÜß]{1,5}-\d{8}-\d{6}#[\\d\\r\\n]+$"
答案 1 :(得分:0)
[\d\r\n]
会匹配数字或新行,因此请尝试使用([\d\r\n]+)
。