我有一个像这样的字符串:
Hello, I'm your \||spoiler\|| and another one \||spoiler2\||
我需要得到
Hello, I'm your SPOILER: spoiler and another one SPOILER: spoiler2
出来。我不能简单地使用
s.replaceAll("\\||", "SPOILER: ");
,因为它也将替换结尾的\||
。我想知道是否有一个可以帮助我的正则表达式? 最佳答案
尝试用以\\\|\|(.*?)\\\|\|
开头的第一个捕获组替换正则表达式模式SPOILER :
:
String s = "Hello, I'm your \\||spoiler\\|| and another one \\||spoiler2\\||";
System.out.println(s);
s = s.replaceAll("\\\\\\|\\|(.*?)\\\\\\|\\|", "SPOILER: $1");
System.out.println(s);
打印:
Hello, I'm your \||spoiler\|| and another one \||spoiler2\||
Hello, I'm your SPOILER: spoiler and another one SPOILER: spoiler2
请注意,Java字符串文字中的文字反斜杠需要两个反斜杠,并且在正则表达式字符串中需要四个反斜杠。另外,
|
是正则表达式元字符,因此也需要使用两个反斜杠进行转义。