gpt4 book ai didi

java - 正则表达式查找字符串并根据条件替换它或添加额外字符

转载 作者:行者123 更新时间:2023-11-30 20:15:17 26 4
gpt4 key购买 nike

我有一个字符串 {{m|gem-pro|*karzijan?||to turn}} 当一个字符串以 {{m 开头并以}} 我想用 () 括号字符串包围 to turn }}

字符串:{{m|gem-pro|*karzijan?||转}}

必需的字符串:{{m|gem-pro|*karzijan?||(转)}}

字符串不仅可以是,还可以是任意字符串。

最佳答案

您可能会使用 2 个具有正面前瞻性的捕获组:

({{m(?:\|[^\|]+)*\|\|)([^}]+)(?=}})

在Java中

String regex = "(\\{\\{m(?:\\|[^\\|]+)*\\|\\|)([^\\}]+)(?=\\}})";

关于模式

  • ( 捕获组 1
    • {{m 字面匹配
    • (?:\|[^\|]+)* 重复 0+ 次匹配 | 然后不匹配 |<
    • \|\|匹配||
  • ) 关闭第 1 组
  • ( 捕获组 2
    • [^}]+ 不匹配 1+ 次
  • ) 关闭第 2 组
  • (?=}}) 正面前瞻,断言直接在右边的是}}

Pattern demo

在替换中,使用 2 个捕获组:

$1($2)

例如在 C# 中:

string pattern = @"({{m(?:\|[^\|]+)*\|\|)([^}]+)(?=}})";
string input = @"{{m|gem-pro|*karzijan?||to turn}}";
Console.WriteLine(Regex.Replace(input, pattern, @"$1($2)"));

关于java - 正则表达式查找字符串并根据条件替换它或添加额外字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55701411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com