正则表达式求解
目标:通过正则表达式提取以下字符串中的“目标字符串”,条件:其中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/2 楼的表达式 用测试工具测试似乎都不行。 --------------------编程问答-------------------- please try
string pattern = @"(?<=<a[^>]*?>)[^<]*?(?=</a>)";--------------------编程问答-------------------- 可以的。 可惜是c#版本。
不兼容PCRE;RegexBuddy报警:THE PCRE library does not support variable repetition inside lookbehind。
--------------------编程问答-------------------- 这种方式方法是错误的, 会导致网页中<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