Java Regex忽略没有Dotall的换行符

原文 标签 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”。现在我在网上找到的所有提示都是使用 Pattern.MULTILINE 和/或 Pattern.DOTALL,但多行只影响 ^ 和 $ anchor ,而 dotall 只影响 .也匹配换行符。问题是我没有 .在这里,它也不是真的适用,因为我只想要数字。
那么我怎样才能让我的正则表达式匹配整个事情而不是停在换行符处呢?

最佳答案

[\d\r\n]将匹配一个数字或一个新行,所以尝试使用 ([\d\r\n]+) .

关于Java Regex忽略没有Dotall的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19948281/

相关文章:

java - SharedPreferences数据散布在每个 fragment 上

java - @Valid 注释不验证子对象列表

java - jMonkey中使用TerrainGrid的无尽地形

regex - 错误 : Big Query REGEX_EXTRACT Cannot parse regular expression: invalid perl operator: (? <

javascript - javascript 中是否有类似 PHP 的 preg_replace_callback() 的东西?

javascript - Hubot不响应正则表达式变量

java - 将分数转换为十进制数

java - 如何创建一个返回字符串长度的用户定义方法?

javascript - Javascript正则表达式可以匹配两个字符串之间的子字符串,但是子字符串可以包含DOT(.)

java - 如何使用正则表达式或任何方法从较大的字符串中抓取字符串的一部分