我有一个字符串,我想删除任何具有负值的字符串,例如
var mystring = "+colour:black +year:2015 -model:golf";
我尝试使用以下正则表达式,但它不起作用。
var reg = "[+A-z:0-9]";
答案 0 :(得分:2)
您可以使用
var result = Regex.Replace(mystring, @"\s*[-][^\s]*\s*", string.Empty);
仅限正值:
var result = Regex.Replace(mystring, @"\s*[+][^\s]*\s*", string.Empty);
正面和负面:
var result = Regex.Replace(mystring, @"\s*[+-][^\s]*\s*", string.Empty);
通过这种方式,您还可以处理任何没有字符但后面有空格的流浪连字符,并且使用\s*
您将修剪输出字符串以重新处理空格。
关于正则表达式的注释:[-+]
匹配-
或+
一次,\s*
匹配0或更多空格,{{1匹配除空白之外的0个或更多个字符。
请参阅demo
答案 1 :(得分:1)
-\S+
会为你做同样的事。
或
-[a-zA-Z0-9:]+