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

正则表达式求解

目标:通过正则表达式提取以下字符串中的“目标字符串”, 
条件:其中6666为变化值;href中的地址也会有变化,可能为全地址(带域名),也可能为相对地址。

<a href="test.php?mod=zone&uid=6666" c="1">目标字符串</a>


该正则表达式需要兼容 pcre/pcrecpp。  --------------------编程问答--------------------

string tempStr = @"<a href=""test.php?mod=zone&uid=6666"" c=""1"">目标字符串</a>";
                string pattern = @"(?i)<a[^>]*?>([^<]*?)</a>";
                string result = Regex.Match(tempStr, pattern).Groups[1].Value;//目标字符串
--------------------编程问答--------------------
		string s = @"<a href=""test.php?mod=zone&uid=6666"" c=""1"">目标字符串</a>";
string r = Regex.Match(s, @"<a href="".*?"".*?>(.*?)</a>").Groups[1].Value;
Response.Write(r);
--------------------编程问答-------------------- 测试代码如下:

std::string wordstring = "<a href=\"test.php?mod=zone&uid=6666\" c=\"1\">目标字符串</a>";

std::string word;
pcrecpp::StringPiece inp_w(wordstring);
pcrecpp::RE w_re("(\\S+),?\\s*"); // 此处写入正确的正则表达式
std::vector<string> outwords;

while (w_re.FindAndConsume(&inp_w, &word)) {
outwords.push_back(word);
}
--------------------编程问答--------------------
引用 1 楼  的回复:
C# code

string tempStr = @"<a href=""test.php?mod=zone&amp;uid=6666"" c=""1"">目标字符串</a>";
                string pattern = @"(?i)<a[^>]*?>([^<]*?)</a>";
                string result = Regex.Ma……


引用 2 楼  的回复:
C# code
        string s = @"<a href=""test.php?mod=zone&amp;uid=6666"" c=""1"">目标字符串</a>";
        string r = Regex.Match(s, @"<a href="".*?"".*?>(.*?)</a>").Groups[1].Value;
        Response.W……


1/2 楼的表达式 用测试工具测试似乎都不行。 --------------------编程问答-------------------- please try 

string pattern = @"(?<=<a[^>]*?>)[^<]*?(?=</a>)";
--------------------编程问答-------------------- 可以的。 可惜是c#版本。 
不兼容PCRE;RegexBuddy报警:THE PCRE library does not support variable repetition inside lookbehind。

引用 5 楼  的回复:
please try 

C# code
string pattern = @"(?<=<a[^>]*?>)[^<]*?(?=</a>)";

--------------------编程问答-------------------- 这种方式方法是错误的, 会导致网页中<a>字符串</a>中的“字符串”全部提取出来; 其实我要的是个子集,所以才列出了那么多限定条件。

引用 5 楼  的回复:
please try 

C# code
string pattern = @"(?<=<a[^>]*?>)[^<]*?(?=</a>)";
--------------------编程问答--------------------
(?<=\bhref="test\.php\?mod=zone&uid=\d+" c="1">)\w+

这是我最开始写的一个,但是不兼容PCRE;RegexBuddy的提示是:THE PCRE library does not support variable repetition inside lookbehind。

有人有办法吗
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,