我想替换此输入文本
https://console.developers.google.com/apis/api/drive/overview?project=
成为(必需的o / p) Line1 %% Line 2 %% Line 3。
我使用了正则表达式
Line1
Line 2
Line 3.
但它给了我o / p as
string.replaceAll("[\\n]+[\\r]", "%%");
到目前为止我尝试过的其他正则表达式 - Line1
Line 2
Line 3.
并且所有都提供不同的o / p但不是我需要的o / p。请帮忙。
答案 0 :(得分:2)
您只需将\r
和\n
放入1个char类:
String result = "Line1\r\nLine 2\r\nLine 3.".replaceAll("[\r\n]+", "%%");
^^^^^^^
请参阅IDEONE demo。 [\r\n]+
匹配1个或多个LF(\n
)或CR(\r
)符号的序列。
请注意,您可以使用"[\\r\\n]+"
获取相同的输出,其中\n
和\r
作为特殊的正则表达式转义序列传递,而在前一个示例中,传递文字CR和LF符号到正则表达式引擎。
另一个解决方案(从Java 8开始)正在使用"\\R+"
(请参阅this reference: \R
任何Unicode换行符序列相当于\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]
)。 \R
匹配任何换行符序列,+
匹配量化模式的一次或多次出现。
**如果您还要删除行上的前导/尾随空格,请使用
replaceAll("\\s*[\r\n]+\\s*", "%%"));
//or
replaceAll("[^\\S\r\n]*[\r\n]+[^\\S\r\n]*", "%%"));
//or
replaceAll("[\\p{Zs}\t]*[\r\n]+[\\p{Zs}\t]*", "%%"));
// or
replaceAll("[\\s&&[^\n\r]]*[\r\n]+[\\s&&[^\n\r]]*", "%%"));
请参阅this IDEONE demo。
[^\\S\r\n]
(= [\\s&&[^\n\r]]
)匹配与\s
匹配的任何空格,\r
和\n
除外。 [\\p{Zs}\t]
匹配任何水平空格(与PCRE / PHP中的\h
相同)。