正则表达式,提取两个已知和未知值之间的文本

时间:2015-12-16 11:26:16

标签: c# regex

我有一个问题,如何在已知字符串加上C#中的任何未知字符串的两个字符串开头之间提取字符串。我的问题可能令人困惑。这是问题所在。

  

这是以“known_value_1”开头的字词unknown-here“我要提取的字词”unknown-here“known_value_2”

因此,两个已知值和我想要提取的单词在双引号内。问题是,在提取的单词之前和之后是未知值但没有双引号。

这不起作用

string value = Regex.Match(input, "\"known_value_1\" \"(.*?)\" \"known_value_2\"").Groups[1].Value;

我不知道\"(.*?)\"之前和之后unkonwn\"(.*?)\"unkonwn$switches = DB::table('sw_pairs')-> join('cust_sw_pair','cust_sw_pair.sw_pair_id', '=', 'sw_pairs.sw_pair_id')-> select( DB::raw( 'cust_sw_pair.sw_pair_id, count(cust_sw_pair.sw_pair_id) as totcount, pri_sw, sec_sw, count(if(pri_sw_admin_status="Admin Down" AND sec_sw_admin_status="Admin Down", 1, NULL)) as downCount') )-> groupBy('cust_sw_pair.sw_pair_id')->get(); 。未知值不是双引号。

提前谢谢

1 个答案:

答案 0 :(得分:3)

将非贪婪的比赛放在任何地方 - .*?为未知。

string value = Regex.Match(input, "\"known_value_1\".*?\"(.*?)\".*?\"known_value_2\"").Groups[1].Value;