Удалите / g в конце regExPattern. Это первая ошибка, которую я вижу наверняка. Реализация регулярных выражений .NET не имеет глобального модификатора, по умолчанию она глобальная.
UPDATE:
Я думаю, что это должно работать:
//define the string
string xmlString = "<xml><elementName specificattribute=\" 111 222 333333 \" anotherattribute=\"something\" somethingelse=\"winkle\"><someotherelement>value of some kind</someotherelement><yetanotherelement>another value of some kind</yetanotherelement></elementName></xml>";
// here's the regExPattern - the syntax checker doesn't like this at all
string regExPattern = "(specificattribute=)\"\\s*([^\"]+?)\\s*";
// here's the replacement
string replacement = "$1\"$2\"";
Regex rgx = new Regex(regExPattern);
string result = rgx.Replace(xmlString, replacement);
Хотя это может на самом деле работать для вас, вложенная / зависящая от контекста природа XML делает регулярные выражения неподходящими для правильного и эффективного анализа. Конечно, это не лучший инструмент для работы, скажем так.
Судя по всему, вы действительно должны использовать что-то вроде Xpath или Linq to XML для анализа и изменения этих атрибутов.
Я практически краду ответ Марка Байера, но так как его пример с XML-файлами, и вы делаете это в памяти, это должно выглядеть примерно так:
XDocument doc = XDocument.Parse("<xml><elementName specificattribute=\" 111 222 333333 \" anotherattribute=\"something\" somethingelse=\"winkle\"><someotherelement>value of some kind</someotherelement><yetanotherelement>another value of some kind</yetanotherelement></elementName></xml>");
foreach (XAttribute attr in doc.Descendants("elementName")
.Attributes("specificattribute"))
{
attr.Value = attr.Value.Trim();
}
string result = doc.ToString();