gpt4 book ai didi

c# - 替换某些字符之间的值

转载 作者:行者123 更新时间:2023-12-02 09:09:31 24 4
gpt4 key购买 nike

我正在尝试替换字符串中 OFFSETROWS 之间的值。我正在使用下面的正则表达式,但它不起作用。

 string strValue = "OFFSET NUMBER ROWS"
string strIndex = "5";
strValue = Regex.Replace(strValue , @"(?<=OFFSET)(\w+?)(?=ROWS)", strIndex);

所以我想要的结果就像

OFFSET 5 ROWS

任何人都可以帮助或建议此正则表达式有什么问题,因为它不会替换值。

最佳答案

这里与正则表达式相关的问题是您没有考虑 NUMBER 两端的空白字符。 。添加\s*\s+来解释它们。

使用

string strValue = "OFFSET NUMBER ROWS";
string strIndex = "5";
strValue = Regex.Replace(strValue , @"(?<=OFFSET\s*)\w+(?=\s*ROWS)", strIndex);
Console.Write(strValue); // => OFFSET 5 ROWS

这里,

  • (?<=OFFSET\s*)是一个积极的回顾,需要 OFFSET和紧邻当前位置左侧的 0+ 个空白字符
  • \w+ - 1+ 个单词字符
  • (?=\s*ROWS) - 是正向前瞻,需要立即在当前位置右侧添加 0+ 个空白字符,然后 ROWS子字符串。

或者,在替换模式中使用带有反向引用的捕获组:

strValue = Regex.Replace(strValue , @"(OFFSET\s*)\w+(\s*ROWS)", $"${{1}}{strIndex}$2");

请参阅C# online demo .

捕获组解决方案的变化有点棘手,因为第一个反向引用后面跟着一个数字,因此您不能使用常规 $1语法,您必须使用明确的形式,${1} .

关于c# - 替换某些字符之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48706504/

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