任何人都可以帮我在C#字符串中替换以&#34开头的任何字符串; startingChars"结束于" endingChars" ......类似的东西:
Regex.Replace(strToReplaceIn, "startingChars[anyNumberOfChars]endingChars", myFunction(anyNumberofChars));
其中strStartingChars和strEndingChars是两个字符串并定义了myFunction
例如,如果开头为"Hello, I need to replace startingCharsWITH_SOMETHINGendingChars, ...."
,则结果为:"Hello, I need to replace myFunctionResult("WITH_SOMETHING"), ..."
请让我知道Regex.Replace表达式会有所帮助,问题不是找到匹配的表达式,而是替换......我怎么能参考
anyNumberOfChars
在表达式的替换参数中?
我希望它足够清楚......谢谢
答案 0 :(得分:2)
你应该使用这样的正则表达式:
abc.*xyz
它会匹配这样的字符串:
abcblablablaxyz
考虑使用最小匹配:
abc.*?xyz
这只会匹配第一个xyz,而不是搜索最后一个xyz。
答案 1 :(得分:2)
您可以使用命名组轻松获取要替换的内容,并使用匹配评估程序来构造替换字符串:
using System.Text.RegularExpressions;
static class Program {
static void Main(string[] args) {
string strToReplaceIn = "Hello, I need to replace startingCharsWITH_SOMETHINGendingChars, ....";
string replaced = Regex.Replace(strToReplaceIn, "startingChars(?<contents>.*?)endingChars", (match) => {
return "myFunctionResult(" + match.Groups["contents"].Value + ")";
});
}
}
named group(表达式中的(?<contents>.*?)
位)可让您引用表达式的子部分,我认为这就是您要求的内容。
或者,您可以使用一个简单的组,即只是括号之间的表达式,而不是?<name>
部分:(.*)
。然后,您应该使用整数索引引用它:
match.Groups[1].Value
(注意:组[0]表示整个匹配)
答案 2 :(得分:0)
^ yourString&安培;
^ - 表示字符串的开头
&安培; - 你的字符串结尾