Java正则表达式在没有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,但 multiline 只影响 ^ 和 $ anchor ,而 dotall 只影响 .也匹配换行符。问题是我没有 .在这里,它也不太适用,因为我只想要数字。 那么我怎样才能让我的正则表达式匹配整个事情而不是在换行符处停止呢?

最佳答案

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

关于Java正则表达式在没有Dotall的情况下忽略换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19948281/

相关文章:

java - 使用 DiskLruCache 时出现正则表达式错误 (Jake Wharton)

java - 帮助使用正则表达式

java - 我可以调试由 Tomcat 运行的 GWT-RPC 程序和由 Apache Web 服务器运行的静态内容吗(使用 IntelliJ)

regex - 正则表达式中 '*' 的特殊工作

java - 如何防止从jar加载类

java - 如何使用 Spring Security Java 配置将 HTTP 请求重定向到 HTTPS?

regex - 有没有办法从 A1 :A1000 for example? 的一系列单元格进行 REGEXMATCH

java - 用于检查字符串是否具有一定位数的正则表达式

java - 我需要将标志放入同步块(synchronized block)中吗?

java - Android PowerPoint 远程