RegEx替换包括新行的值

时间:2008-11-11 14:17:12

标签: c# regex

我有一个类似下面的代码片段。

string bodyTypeAssemblyQualifiedName = "XXX.XX.XI.CustomerPayment.Schemas.r1.CustomerPayments_v01, XXX.XX.XI.CustomerPaym" +
                "ent.Schemas.r1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ac564f277cd4488" +
                "e";

我想在C#中使用正则表达式来获取它:

string bodyTypeAssemblyQualifiedName = null;

我尝试使用如下所示的RegEx,但它与换行符不匹配......

bodyTypeAssemblyQualifiedName\s=\s(?<location>.*?);

3 个答案:

答案 0 :(得分:1)

这有效:

  

(小于=串\ sbodyTypeAssemblyQualifiedName \ S = \ S')(S:[^] *)(?=;)

相当于:

  1. 字符串后面的字符串 bodyTypeAssemblyQualifiedName =“
  2. 打开单行(将\ r \ n作为 任何其他角色)(这是什么 (?s :)确实)
  3. 匹配每个不是分号的字符
  4. 直到达到单个分号

答案 1 :(得分:1)

@Will,通过用否定的字符类替换点,您就不再需要单行修饰符。如果我正确地阅读了这个问题,你也不需要使用外观。

bodyTypeAssemblyQualifiedName\s+=\s+(?<location>[^;]+);

答案 2 :(得分:0)

你可以尝试

bodyTypeAssemblyQualifiedName\s=\s(?<location>[.\n]*?);

或者为您的模式设置RegexOptions.Singleline

  

RegexOptions.Singleline - 指定单行模式。更改点(。)的含义,使其匹配每个字符(而不是除\ n之外的每个字符)。