当前位置:编程学习 > C#/ASP.NET >>

c# 正则表达式的问题 需要两个简单的正则提取代码 测试通过50分立刻结 在线等

一点C#不会 被强制拉来改一小段C#代码 是正则提取html元素的 然后html内容结构更新了一小下 领导觉得很简单让我去改……我TMD啥也不会C#

需求如下

第一处

//要提取操作的变量:rhtml
//类型 string
//内容样例 !#$@^%$#%&^$%Q#$<script src="/static/dynJs.php?jsversion=8834&method=loginJs"  type="text/javascript"></script>

//其中 html各个属性之间可能出现空格换行制表符(html和js特性决定存在空格或者制表符不影响解释)  但是src内不会出现多余空格或者换行 要求提取出这个src的值 不含首尾双引号 保存到string变量 rjssrc内



第二处

//要提取操作的变量:rjs
//类型 string
//内容 rjs是一段javascript的完成代码 我们要提取其中一个变量定义 这个变量定义是这样的:
//var key='abcdefg==';
//或者
//var key="abcdefg==";
//就是说要兼容这个定义使用的是单引号还是双引号 同时 var和key之间 key和等号之间 双引号外前后都可能存在空格或者制表符或者换行需要兼容(html和js特性决定存在空格或者制表符不影响解释)其中abcdefg代表一个不定长度的随机字符串

//要求提取这个key的值 并不要这个值最后两位的两个base64标记的等号 保存在string类型变量rkey内
//


要求就是这两个 提交完整代码我直接覆盖程序现有代码测试通过立刻结分

c#  正则 --------------------编程问答--------------------

//1
 string s = "!#$@^%$#%&^$%Q#$<script src=\"/static/dynJs.php?jsversion=8834&method=loginJs\"  type=\"text/javascript\"></script>";
string rhtml=System.Text.RegularExpressions.Regex.Match(s, "<script\\s+src=\"([^\"]+)\"").Groups[1].Value;

//2
 string s = "var key=\"abcdefg==\";";
string rjs=System.Text.RegularExpressions.Regex.Match(s, "var\\s+key\\s*=\\s*\"([^\\=]+)").Groups[1].Value;
--------------------编程问答--------------------


 string rjssrc = Regex.Match("你的内容", "<script src=\"(?<value>[\\S]+)\".*?></script>").Groups["value"].Value;
        string rkey = Regex.Match("var key='abcdefg==';", "var[\\s]+key[\\s]*=[\\s]*(?:'([\\S]*?)'|\"([\\S]*?)\")").Groups.Cast<Group>().Where(x => (x.Index != 0 && !string.IsNullOrEmpty(x.Value))).First().ToString();
--------------------编程问答--------------------
string rhtml=System.Text.RegularExpressions.Regex.Match(yourstr, @"(?is)<script\b.*?src=(['""])([^'""]+?)\1").Groups[2].Value;
 


string rjs=System.Text.RegularExpressions.Regex.Match(yourstr, @"(?is)var\s+key\s*=(['""])([^'""]+)\1").Groups[2].Value;
--------------------编程问答-------------------- 这么多人都答了,我就不写了,大同小异。你们为什么不直接让他
using System.Text.RegularExpressions;
然后直接用Regex呢。。。 --------------------编程问答-------------------- 开了个小会 感谢楼上各位 马上去复制粘贴测试给分。。。 --------------------编程问答--------------------
引用 1 楼 c02645 的回复:

//1
 string s = "!#$@^%$#%&^$%Q#$<script src=\"/static/dynJs.php?jsversion=8834&method=loginJs\"  type=\"text/javascript\"></script>";
string rhtml=System.Text.RegularExpressions.Regex.Match(s, "<script\\s+src=\"([^\"]+)\"").Groups[1].Value;

//2
 string s = "var key=\"abcdefg==\";";
string rjs=System.Text.RegularExpressions.Regex.Match(s, "var\\s+key\\s*=\\s*\"([^\\=]+)").Groups[1].Value;


抱歉 我没说明白 html内会有多个script 要去匹配这个src前半部分的是/static/dynJs.php 这个的 后面参数可能不同 要取回全部这个的整体 --------------------编程问答--------------------
引用 2 楼 lyj224170707 的回复:


 string rjssrc = Regex.Match("你的内容", "<script src=\"(?<value>[\\S]+)\".*?></script>").Groups["value"].Value;
        string rkey = Regex.Match("var key='abcdefg==';", "var[\\s]+key[\\s]*=[\\s]*(?:'([\\S]*?)'|\"([\\S]*?)\")").Groups.Cast<Group>().Where(x => (x.Index != 0 && !string.IsNullOrEmpty(x.Value))).First().ToString();




抱歉 我没说明白 第一个html内会有多个script 要去匹配这个src前半部分的是/static/dynJs.php 这个的 后面参数可能不同 要取回全部这个的整体 --------------------编程问答--------------------
using System.Text.RegularExpressions;



string yourhtml="balabalba";

Regex reg=new Regex(@"(?is)<script\b.*?src=(['""])(/static/dynJs.php\?[^'""]+?)\1");

string rhtml= reg.Match(yourhtml).Groups[2].Value;



string rjs=Regex.Match(yourstr, @"(?is)var\s+key\s*=(['""])([^'""]+)\1").Groups[2].Value;
--------------------编程问答--------------------
引用 7 楼 rpgfreeygz 的回复:
Quote: 引用 2 楼 lyj224170707 的回复:



 string rjssrc = Regex.Match("你的内容", "<script src=\"(?<value>[\\S]+)\".*?></script>").Groups["value"].Value;
        string rkey = Regex.Match("var key='abcdefg==';", "var[\\s]+key[\\s]*=[\\s]*(?:'([\\S]*?)'|\"([\\S]*?)\")").Groups.Cast<Group>().Where(x => (x.Index != 0 && !string.IsNullOrEmpty(x.Value))).First().ToString();




抱歉 我没说明白 第一个html内会有多个script 要去匹配这个src前半部分的是/static/dynJs.php 这个的 后面参数可能不同 要取回全部这个的整体

            string s = "!#$@^%$#%&^$%Q#$<script src=\"/static/dynJs.php?jsversion=8834&method=loginJs\"  type=\"text/javascript\"></script>";
System.Text.RegularExpressions.Regex.Match(s, "<script\\s+src=\"/static/dynJs.php\\?([^\"]+)\"").Groups[1].Value;

--------------------编程问答-------------------- 1//
<script\\s+src=\"/static/dynJs.php\\?([^\"]+)\"
//2
var\\s+key\\s*=\\s*[\"|']([^\\=\"\']+)
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,