繁体   English   中英

如何删除单词,以:sign开头,以:sign结尾,而不是c#中的完整句子

[英]How to remove words starts with : sign and ends with : sign, not a full sentence in c#

我想删除两侧都带有:符号的单词(Like:word :)。我已经使用正则表达式删除了两个:sign之间的所有单词。 但是我需要删除两个:符号之间不存在的单个单词,而不是完整的句子(例如:我喜欢打板球:)。

string txt = "Hello, i :want: to remove :some word from: my text";
var output = Regex.Replace(txt, @" ?\:.*?\:", " ");

预期产量:

您好,我要从文字中删除一些单词

问题是您的正则表达式。 尝试这个:

 var output = Regex.Replace(txt, @":([A-Za-z0-9]*):", "");

在正则表达式中,您使用的是.*它匹配除换行符以外的任何字符。 相反,我假设您想要任何非空白字符。 在正则表达式中,这将是\\S ,因此,您总共可以得到:

string txt = "Hello, i :want: to remove :some word from: my text";
var output = Regex.Replace(txt, @" ?\:\S*?\:", " ");

使用字符类来匹配正则表达式中的单词。

"\\:\\w\\:"

这将匹配两边用:包围的单词,仅此而已。

我建议这个:

var output = Regex.Replace(txt, @":\w+:", "");

您可以找到所有具有的词:在其两面都签收,但不应有空格

string txt = "Hello, i :want: to remove :some word from: my :test:";
var output = Regex.Replace(txt, @" \:\w+\b(?! )\:", " ");

暂无
暂无

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

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