我有一个像这样的字符串:

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字符串文字中的文字反斜杠需要两个反斜杠,并且在正则表达式字符串中需要四个反斜杠。另外,|是正则表达式元字符,因此也需要使用两个反斜杠进行转义。

07-26 03:03