正则表达式删除某个字符后的所有内容(评论)

ray*_*ran 1 c# regex character line

我有一个正则表达式,我用来删除特定字符后的所有字符,分号.

        var regex = new Regex(@";(.*)", RegexOptions.Singleline);
        tb.Text = regex.Replace(tb.Text, "");
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常,但有时它删除文本框的整个文本.例如,删除了所有此代码:

;fgkdfgdfgd
;dfgdfkghdfgdf
;sdgfsdfsdfsdf
;dfgdfgdfg

#dont remove this          ;fgdfgdfg
Run Code Online (Sandbox Code Playgroud)

"#dont remove this"应保持原样,因为它不是在分号后,但它不是?我的正则表达式有问题吗?

我们的想法是删除或修剪文件中的所有注释.

Yah*_*hia 5

尝试(评论后更新):

tb.Lines = (
    from l in tb.Lines 
    let x = l.IndexOf (';') 
    select (x >= 0 ? l.SubString (0, x) : l)
).ToArray();
Run Code Online (Sandbox Code Playgroud)

这应该比Regex运行得更快......

  • @Scott Rippey我不知道你收集的地方.有时提供更简单,更有效的解决方案绝对是最佳选择.许多学习新技能的人尝试用这种新技能解决每一个问题,引导人们朝着正确的方向前进并不超出SO的范围.只是让代码完成大部分的谈话,这就是它的有形内容,而不仅仅是单词...... (2认同)