C++ cli 如何比较拆分前的值?

C++ cli 如何比较拆分前的值?,c++-cli,C++ Cli,我的程序有一个问题,当我试图比较两个标记“和启用的“>”时,它们会提取整个html标记。我希望我的程序做的是在名为mystrings1的php源代码中找到标记,看看它们是否存在,然后找到名为mystrings2且值为“Enabled”的标记“在与每个匹配的mystrings1相同的行上,然后提取mystrings1值 在我的程序中,它读取整个标签,如下所示: [PHP] <p id='mystrings1'>user data 1</p><p id="images"

我的程序有一个问题,当我试图比较两个标记“和启用的“>”时,它们会提取整个html标记。我希望我的程序做的是在名为mystrings1的php源代码中找到标记,看看它们是否存在,然后找到名为mystrings2且值为“Enabled”的标记“在与每个匹配的mystrings1相同的行上,然后提取mystrings1值

在我的程序中,它读取整个标签,如下所示:

[PHP]
<p id='mystrings1'>user data 1</p><p id="images">
<a href="images.php?id=1">Images</a>      </td> | <a href="http://mylink.com">Link</a> </td> | <a href="delete.php?id=1">Delete</a>   </td> | <span id="mystrings2">Enabled</td>
[/PHP]
[PHP]

用户数据1

|| |已启用 [/PHP]

以下是表格代码:

 #include "StdAfx.h"
 #include "Form1.h"

 using namespace MyProject;

 System::Void Form1::timer1_Tick(System::Object^  sender, System::EventArgs^  e)
 {
     timer1->Enabled = false;
     timer1->Stop();

     try
     {
         String ^URL1 = "http://mysite.com/myscript.php?user=test&pass=test";
         HttpWebRequest ^request1 = safe_cast<HttpWebRequest^>(WebRequest::Create(URL1));
         HttpWebResponse ^response1 = safe_cast<HttpWebResponse^>(request1->GetResponse());
         StreamReader ^reader1 = gcnew StreamReader(response1->GetResponseStream());
         String ^str1 = reader1->ReadToEnd();
         String ^pattern1 = "(<p id='mystrings1'>(.*?)</p>(.*?)<span id=\"mystrings2\">Enabled</td>)";
         MatchCollection ^matches1 = Regex::Matches(str1, pattern1);
         Match ^m1 = Regex::Match(str1, pattern1);

         for each (Match ^x1 in matches1)
         {
             array<String^> ^StrArr1 = x1->Value->ToString()->Split();
             MessageBox::Show(x1->Value->ToString());
         }
     }
     catch (Exception ^ex)
     {
     }
 }
#包括“StdAfx.h”
#包括“表格1.h”
使用名称空间MyProject;
System::Void Form1::timer1\u勾选(System::Object^sender,System::EventArgs^e)
{
timer1->Enabled=false;
定时器1->Stop();
尝试
{
字符串^URL1=”http://mysite.com/myscript.php?user=test&pass=test";
HttpWebRequest^request1=safe_cast(WebRequest::Create(URL1));
HttpWebResponse^response1=safe_cast(request1->GetResponse());
StreamReader^reader1=gcnew StreamReader(response1->GetResponseStream());
字符串^str1=reader1->ReadToEnd();
字符串^pattern1=“(

(.*)

(.*)已启用)”; MatchCollection^matches1=Regex::Matches(str1,pattern1); Match^m1=Regex::Match(str1,pattern1); 对于每个(匹配1中的^x1) { 数组^StrArr1=x1->Value->ToString()->Split(); MessageBox::Show(x1->Value->ToString()); } } 捕获(异常^ex) { } }
请有人告诉我如何比较mystrings1和mystrings2之间的标记,并使用值“enabled”查看是否找到匹配项,然后显示带有mystrings1值的messagebox


任何建议都将不胜感激。

此代码可能会对您有所帮助

// set str1 to a constant string for testing
String^ str1 = "<p id='mystrings1'>user data 1</p><p id=\"images\"> <a href=\"images.php?id=1\">Images</a></td> | <a href=\"http://myhotlink.com\">Link</a> </td> | <a href=\"delete.php?id=1\">Delete</a> </td> | <span id=\"mystrings2\">Enabled</td>";
// the pattern is the key part to figure out
String ^pattern1 = "<p\\sid='mystrings1'>(?<mystrings1value>[^<>]+)</p>.*<span\\sid=\\\"mystrings2\\\">Enabled";
Regex^ r = gcnew Regex (pattern1, RegexOptions::IgnoreCase);

Match ^m1 = r->Match(str1);
if (m1->Success)
{
    MessageBox::Show (m1->Groups["mystrings1value"]->Value);
}
//将str1设置为常量字符串以进行测试
String ^str1=“

用户数据1

已启用”; //模式是要弄清楚的关键部分 字符串^pattern1=“(?[^]+)

*已启用”; Regex^r=gcnewregex(pattern1,RegexOptions::IgnoreCase); 匹配^m1=r->匹配(str1); 如果(m1->成功) { MessageBox::Show(m1->Groups[“mystrings1value”]->Value); }