当前位置: 代码迷 >> C# >> 关于Matches的正则的有关问题
  详细解决方案

关于Matches的正则的有关问题

热度:132   发布时间:2016-04-28 08:38:19.0
关于Matches的正则的问题

string content = @"1111<a target='_blank' href='/1122'>中国南京</a>2222<a target='_blank' href='/2233'>中国长沙</a><a target='_blank' href='/2233'>中国香港</a>3333333";
this.RTB_Text.Text = String.Join(Environment.NewLine, System.Text.RegularExpressions.Regex.Matches(content, @"<a target='_blank' href='/(\d+)'>([\s\S]*?)</a>").Cast<System.Text.RegularExpressions.Match>());


如上代码返回的是

<a target='_blank' href='/1122'>中国南京</a>
<a target='_blank' href='/2233'>中国长沙</a>
<a target='_blank' href='/2233'>中国香港</a>


我如何改写代码才能实现直接返回

中国南京
中国长沙
中国香港

------解决思路----------------------

@"<a target='_blank' href='/(\d+)'>(?<在这里给组取一个名字>[\s\S]*?)</a>"
然后 m.Groups["在这里给组取一个名字"].Value
或者  m.Group[2].Value //第二个括号里面的内容
或者记住一个写法
(?<=(这里前面的匹配))(中间是你想要的)(?=(这里是后面的匹配))
比如 我要匹配一个引号里面的内容
"abcdefg"
(?<=").*?(?=") 就可以了
前面的和 后面的 是只参与匹配不而已 不会被记录下来
  相关解决方案