从字符串中删除带有某种模式的子字符串

时间:2014-04-15 20:00:41

标签: c# asp.net .net regex string

我有一个像JSON格式的字符串:

  

XYZ DIV参数:width = \" 1280 \" height = \" 720 \",session = \" 1 \"

现在我想从此字符串中删除width=\"1280\" height=\"720\"

注意:可以有任何数字代替1280和720.所以,我不能用null替换它。

请告诉我如何解决?无论是通过Regex还是其他任何更好的方法。

3 个答案:

答案 0 :(得分:4)

要用空字符串替换正则表达式:

(width|height)=\\"\d+\\"

正则表达式可视化:

Regular expression visualization

代码:

string input = @"XYZ DIV Parameters: width=\""1280\"" height=\""720\"", session=\""1\""";
string output = Regex.Replace(input, @"(width|height)=\\""\d+\\""", string.Empty);

答案 1 :(得分:2)

您可以使用以下正则表达式进行查找和替换:

width=\\"\d*+\\"替换为空字符串,并将height=\\"\d*+\\"替换为空字符串。

这是删除width=\"XYZ\"的整个文本,如果您只是要替换数字或删除可以替换为适合您需要的字符串的数字(例如width=\"\"

如果您可以保证宽度和高度始终采用该格式,并且始终用空格分隔,则可以使用width=\\"\d*+\\" height=\\"\d*+\\"将其组合成一个更大的正则表达式查找/替换。


关于正则表达式的更多解释让你拿走一些东西,而不仅仅是快速修复:) width=\\"\d*+\\"分解为:

  1. width=非常简单,只需找到您要查找的文字即可开始删除。
  2. \\"因为\是正则表达式中的一个特殊字符,你必须将其转义,然后"字符可以像往常一样跟进它。
  3. \d*+位数\d,其中零个或多个*,然后是非贪婪+。这里重要的部分是对数字的非贪婪。如果你把它关掉了,你的正则表达式会看起来并消​​耗数字,直到找到最后一个"。在您的情况下不需要100%(因为高度缓冲)但它仍然更安全。
  4. \\"结束正则表达式

答案 2 :(得分:1)

这样做:

string resultString = null;
try {
    Regex regexObj = new Regex(@"^(.*?)width=\\"".*?\\"" height=\\"".*?\\""(.*?)$", RegexOptions.IgnoreCase);
    resultString = regexObj.Replace(subjectString, @"$1width=\""\"" height=\""\""$2");
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}