[英]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.