加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#正则表达式替换和*

发布时间:2020-12-15 08:02:30 所属栏目:百科 来源:网络整理
导读:我是一个做C#的perl程序员.面对与零或多个断言有关的 Regex.Replace的奇怪问题,*. 假设我想用一个字母替换零个或多个字母.在perl中,我可以这样做: my $s = "A";$s =~ s/w*/B/;print $s;$s now = "B" 但是如果我尝试在C#中做同样的事情,就像这样: string s
我是一个做C#的perl程序员.面对与零或多个断言有关的 Regex.Replace的奇怪问题,*.

假设我想用一个字母替换零个或多个字母.在perl中,我可以这样做:

my $s = "A";
$s =~ s/w*/B/;
print $s;
$s now = "B"

但是如果我尝试在C#中做同样的事情,就像这样:

string s = Regex.Replace("A",@"w*","B");
s now = "BB"

文档确实说“*字符在替换模式中不被识别为元字符”

为什么?如果你想要一些你的正则表达式在一些字符串上留下可能不存在的字符串(如最后的“.*?”),是否有任何解决方法?

(这是一个愚蠢的例子,但你明白了)

解决方法

用^开始你的模式,用$结束它,你的问题就解决了.
string s = Regex.Replace("AAAA",@"^w*$","B");
Console.Write(s);

或者 – 您可以使用运算符而不是*运算符停止匹配0长度字符串:

string s = Regex.Replace("AAAA",@"w+","B");
Console.Write(s);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读