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