正则表达式查找和替换文本

时间:2012-08-13 06:42:09

标签: c# regex winforms

我有一个字符串变量,以下是它的内容:

  

.....
  DataElement deAbtVersionNum
  m_AttrParent commercialcardsys :: CommercialCardInt
   m_AttrGUIFieldLabel“WEX_CI 3.02.01P20.1”appsys30 :: lngDbb
   m_AttrdbType“char”
  .....

如......所示,也可能有其他文字。

在第三行我们有“WEX_CI 3.02.01P20.1”(这是从WEX ..出现的唯一地方开始。)

我需要用新版本3.02.01P20.1替换3.02.01P20.1(完全).NEW

我已经能够使用一个脏方法来查找“Wex然后找到下一个”的索引并且等等等等。

                int start = CItext.LastIndexOf("\"WEX") + 1;
                int end = CItext.IndexOf("\"", start);
                string text = CItext.Substring(start, end - start + 1);

                string[] parts = text.Split(new Char[] { ' ' });
                string editedText = parts[0] + " " + LabelName;
                CItext = CItext.Replace(text, editedText);

CIText是我必须编辑的字符串。 LabelName是我想要放的字符串而不是3.02.01P20.1

有人能建议我使用其他干净的方法吗?

2 个答案:

答案 0 :(得分:0)

我认为你可以使用正则表达式" lookahead"。试试这个。

var result = Regex.Replace(text, "(?<=WEX_CI )[^\"]+", "NEW", RegexOptions.Multiline);

答案 1 :(得分:0)

试试这个正则表达式

var result =   Regex.Replace(text,@"(WEX_CI[\s][\da-zA-Z\.]+)","$1.NEW");