【发布时间】:2010-08-10 01:09:38
【问题描述】:
我目前正在尝试学习如何使用正则表达式,所以请耐心等待我的简单问题。例如,假设我有一个输入文件,其中包含一堆由换行符分隔的链接:
www.foo.com/Archives/monkeys.htm
Monkey 网站说明。www.foo.com/Archives/pigs.txt
Pig 网站的说明。www.foo.com/Archives/kitty.txt
Kitty 网站的描述。www.foo.com/Archives/apple.htm
Apple 网站说明。
如果我想获得一个网站及其描述,这个正则表达式似乎适用于测试工具:.*www.*\\s.*Pig.*
但是,当我尝试在我的代码中运行它时,它似乎不起作用。这个表达正确吗?我尝试将“\s”替换为“\n”,但它似乎仍然无法正常工作。
【问题讨论】:
-
只是为了提醒可能更简单的解决方案:对于我自己的明确
\n's 的情况,即使有Pattern.DOTALL/(?s)和双转义(\\)的建议,如所述下面,我发现这很繁琐,只能退回到非正则表达式字符串方法。str.contains("\n")工作正常。str.replaceAll("\n", replacement)也有效。不过,在 Java 11 中,我找不到返回 true 的String.matches或Pattern.compile的变体。(与下面的解决方案不同,如果您需要捕获各种换行符,这将无济于事。)
标签: java regex line-breaks