Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式忽略没有Dotall的换行符_Java_Regex - Fatal编程技术网

Java正则表达式忽略没有Dotall的换行符

Java正则表达式忽略没有Dotall的换行符,java,regex,Java,Regex,我必须解析返回的电子邮件中的特定对象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。现

我必须解析返回的电子邮件中的特定对象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只影响^和$anchors,DOTALL只影响make。在新线字符上也匹配。问题是我没有一个好的选择。这里也不适用,因为我只需要数字。
那么,我如何才能使我的正则表达式与整件事情匹配,而不在换行符处停止?

既然您的号码在最后,您可以尝试:

"(?s)^[a-zA-Z0-9äöüÄÖÜß]{1,5}#[a-zA-Z0-9äöüÄÖÜß]{1,5}-\d{8}-\d{6}#(.*)$"
i、 e.用DOTALL捕捉一切

在没有DOTALL的情况下,以下各项也应起作用:


[\d\r\n]将匹配一个数字或一个新行,因此请尝试使用[\d\r\n]+。

我已将\d替换为[\d\r\n],它确实会使正则表达式膨胀,但效果很好。谢谢
"^[a-zA-Z0-9äöüÄÖÜß]{1,5}#[a-zA-Z0-9äöüÄÖÜß]{1,5}-\d{8}-\d{6}#[\\d\\r\\n]+$"