繁体   English   中英

为什么我的Regex.Replace字符串包含两次替换值?

[英]Why does my Regex.Replace string contain the replacement value twice?

我有以下字符串: aWesdE ,我想使用Regex.Replace(string, string, string, RegexOptions)转换为http://myserver.com/aWesdE.jpg

目前,我使用此代码:

string input = "aWesdE";
string match = "(.*)";
string replacement = "http://myserver.com/$1.jpg";
string output = Regex.Replace(input, match, replacement,
          RegexOptions.IgnoreCase | RegexOptions.Singleline);

结果是输出结果如下: http://myserver.com/aWesdE.jpghttp://myserver.com/.jpghttp://myserver.com/aWesdE.jpghttp://myserver.com/.jpghttp://myserver.com/aWesdE.jpghttp://myserver.com/.jpg

因此,替换值正确显示,然后似乎再次附加 - 非常奇怪。 这里发生了什么?

您的正则表达式中实际上有2个匹配项。 你定义了这样的匹配:

string match = "(.*)";

这意味着匹配零个或多个字符,因此您有2个匹配 - 空字符串和您的文本。 为了修复它,将模式更改为

string match = "(.+)";

这意味着匹配一个或多个字符 - 在这种情况下,您将只获得一个匹配

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM