带有“$”符号的正则表达式字符串
Regex string with "$" symbol
我正在使用 StringBuilder.Replace()
将一些 "keywords" 更改为我自己的方法,但由于它与整个词不匹配,我需要找到一种正确替换它的方法。
string example = "Hey $name! Welcome to $namewebsite!";
StringBuilder sb = new StringBuilder(example);
sb.Replace("$name", "getName()");
sb.Replace("$namewebsite", "getWebSiteName()");
return sb;
上面的输出将是 "Hey getName()!, Welcome to getName()website!",所以我正在尝试使用 RegEx 来匹配整个单词。
string example = "Hey $name! Welcome to $namewebsite!";
example = Regex.Replace(example, "\b$name\b", "getName()");
example = Regex.Replace(example, "\b$namewebsite\b", "getWebSiteName()");
return example;
但是由于 "keyword" 有符号“$”,所以它不起作用,至少我是这么认为的,因为它没有替换任何 "keywords".
当然这只是我的代码的一个小例子,我有 30 多个以“$”开头的关键字来替换方法名称。
符号$
是正则表达式中的一个特殊字符,表示字符串的结束。如果你想把它当作文字使用,你需要转义它:
尝试使用 $
而不是 $
。
更多信息:http://regexlib.com/CheatSheet.aspx?AspxAutoDetectCookieSupport=1
这里的问题不需要用正则表达式来解决。这是您进行替换的顺序。这是因为第一个搜索是第二个的子字符串。把它们换过来,它就会起作用。
string example = "Hey $name! Welcome to $namewebsite!";
StringBuilder sb = new StringBuilder(example);
sb.Replace("$namewebsite", "getWebSiteName()");
sb.Replace("$name", "getName()");
return sb;
工作示例:https://ideone.com/kHwHUT
解决此问题的另一种方法是在搜索字符串的结尾和开头放置一个分隔符。例如:
string example = "Hey $name$! Welcome to $namewebsite$!";
StringBuilder sb = new StringBuilder(example);
sb.Replace("$name$", "getName()");
sb.Replace("$namewebsite$", "getWebSiteName()");
return sb;
我正在使用 StringBuilder.Replace()
将一些 "keywords" 更改为我自己的方法,但由于它与整个词不匹配,我需要找到一种正确替换它的方法。
string example = "Hey $name! Welcome to $namewebsite!";
StringBuilder sb = new StringBuilder(example);
sb.Replace("$name", "getName()");
sb.Replace("$namewebsite", "getWebSiteName()");
return sb;
上面的输出将是 "Hey getName()!, Welcome to getName()website!",所以我正在尝试使用 RegEx 来匹配整个单词。
string example = "Hey $name! Welcome to $namewebsite!";
example = Regex.Replace(example, "\b$name\b", "getName()");
example = Regex.Replace(example, "\b$namewebsite\b", "getWebSiteName()");
return example;
但是由于 "keyword" 有符号“$”,所以它不起作用,至少我是这么认为的,因为它没有替换任何 "keywords".
当然这只是我的代码的一个小例子,我有 30 多个以“$”开头的关键字来替换方法名称。
符号$
是正则表达式中的一个特殊字符,表示字符串的结束。如果你想把它当作文字使用,你需要转义它:
尝试使用 $
而不是 $
。
更多信息:http://regexlib.com/CheatSheet.aspx?AspxAutoDetectCookieSupport=1
这里的问题不需要用正则表达式来解决。这是您进行替换的顺序。这是因为第一个搜索是第二个的子字符串。把它们换过来,它就会起作用。
string example = "Hey $name! Welcome to $namewebsite!";
StringBuilder sb = new StringBuilder(example);
sb.Replace("$namewebsite", "getWebSiteName()");
sb.Replace("$name", "getName()");
return sb;
工作示例:https://ideone.com/kHwHUT
解决此问题的另一种方法是在搜索字符串的结尾和开头放置一个分隔符。例如:
string example = "Hey $name$! Welcome to $namewebsite$!";
StringBuilder sb = new StringBuilder(example);
sb.Replace("$name$", "getName()");
sb.Replace("$namewebsite$", "getWebSiteName()");
return sb;