如何在正则表达式中转义这些引号?

时间:2014-07-12 11:27:08

标签: c# regex text

我有一个字符串文本,如:

  "ruf": "the text I want",
     "puf":

我想在引号中提取文本。

尝试了这个:

         string cg="?<=\"ruf\":\")(.*?)(?=\",puf";
         Regex g = new Regex(cg);

它没有用。

3 个答案:

答案 0 :(得分:3)

尝试使用以下正则表达式:

(?<="ruf":\s\")[^"]*

Online demo

程序中使用的字符串文字:

C#

@"(?<=""ruf"":\s\"")[^""]*"

输出:

the text I want

模式描述:

  (?<=                     look behind to see if there is:
    "ruf":                   '"ruf":'
    \s                       whitespace (\n, \r, \t, \f, and " ")
    \"                       '"'
  )                        end of look-behind
  [^"]*                    any character except: '"' (0 or more times
                           (matching the most amount possible))

Regular expression visualization

Debuggex Demo


修改

  

你能加puf吗?因为它是一个长文本,其中包含多个引号

如果你正在寻找&#34; puf&#34;找到然后尝试下面的正则表达式:

(?<="ruf":\s\")[\s\S]*(?=",\s*"puf")

Online demo

程序中使用的字符串文字:

C#

@"(?<=""ruf"":\s\"")[\s\S]*(?="",\s*""puf"")"

答案 1 :(得分:1)

您可以使用s修饰符

尝试以下正则表达式
/(?<=\"ruf\": \")[^\"]*(?=\",.*?\"puf\":)/s

DEMO

使用s修饰符,点也匹配换行符。

答案 2 :(得分:1)

这样做:

var myRegex = new Regex(@"(?s)(?<=""ruf"": "")[^""]*(?=\s*""puf"")");
string resultString = myRegex.Match(yourString).Value;
Console.WriteLine(resultString);