dqnk57224 2012-08-18 08:04
浏览 22
已采纳

C#正则表达式匹配(相当于php_match_all)

Here is working php code

<?php
$str = '<users>
<user id="1" value1="afaaf" value2="racad" value3="xarcd">User1</user>
<user id="2" value1="fsvgvdsg" value2="wdafsc" value3="aefvbdfg">User2</user>
<user id="3" value1="chthb" value2="rtvfascf" value3="xasedfvg">User3</user>
</users>';
$out = '';
if(preg_match_all('|<user id="(.*)" value1="(.*)" value2="(.*)" value3="(.*)">(.*)</user>|',$str,$matches))
{
    for($i=0;$i<count($matches[1]);$i++)
    $out .= $matches[1][$i].'|'.$matches[2][$i].'|'.$matches[3][$i].'|'.$matches[4][$i].'|'.$matches[5][$i]."
";

    echo $out;
}
 ?>

This is what I get

1|afaaf|racad|xarcd|User1
2|fsvgvdsg|wdafsc|aefvbdfg|User2
3|chthb|rtvfascf|xasedfvg|User3

C# code

    string patt = "<user id=\"(.*)\" value1=\"(.*)\" value2=\"(.*)\" value3=\"(.*)\">(.*)</user>";
    string str = "<users><user id=\"1\" value1=\"afaaf\" value2=\"racad\" value3=\"xarcd\">User1</user><user id=\"2\" value1=\"fsvgvdsg\" value2=\"wdafsc\" value3=\"aefvbdfg\">User2</user><user id=\"3\" value1=\"chthb\" value2=\"rtvfascf\" value3=\"xasedfvg\">User3</user></users>";
    MatchCollection mc;
    Regex r = new Regex(patt);
    mc = r.Matches(str);

    for (int i = 0; i < mc.Count; i++)
        textBox1.Text += mc[i].Value + "
";

and I get

<user id=\"1\" value1=\"afaaf\" value2=\"racad\" value3=\"xarcd\">User1</user><user id=\"2\" value1=\"fsvgvdsg\" value2=\"wdafsc\" value3=\"aefvbdfg\">User2</user><user id=\"3\" value1=\"chthb\" value2=\"rtvfascf\" value3=\"xasedfvg\">User3</user>

You can see that string what i get from c# code isn't even close to my php result.

How to get result like from my php code?

Hope you understand what is my problem here.

Thanks

  • 写回答

3条回答 默认 最新

  • duanbin3021 2012-08-18 08:19
    关注

    try this :

    change (.*) to (.*?) in you RegEx pattern
    

    and modify your snippet as:

    for (int i = 0; i < mc.Count; i++)
        textBox1.Text += mc[i].Groups[1].Value + mc[i].Groups[2].Value + mc[i].Groups[3].Value + + mc[i].Groups[4].Value + mc[i].Groups[5].Value + "
    ";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程