求正则

验证码识别 2011-04-06 10:44:39
s = "...<tr>...12345...</tr>..."

...为数目不定的任意字符, 可能含有多个 <tr> 或 </tr>


要求匹配到12345, 以<tr>开始 </tr>结束的最小匹配


正则表达怎么写?
...全文
156 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fos_jpg 2011-04-15
  • 打赏
  • 举报
回复
<tr>[\s\S]*?</tr> 貌似这样也行
fos_jpg 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lxcnn 的回复:]

因为<tr>只出现一次,所以也没必要用MatchCollection 了,直接用Match 就行了

C# code
string s = "...<tr>...12345...56789...54321...</tr>...";
Regex reg = new Regex(@"(?is)<tr>.*?</tr>");
Match m = reg.Match(s);
if(m.Succes……
[/Quote]


能讲一下(?is) 啥意思吗?
-过客- 2011-04-06
  • 打赏
  • 举报
回复
因为<tr>只出现一次,所以也没必要用MatchCollection 了,直接用Match 就行了

string s = "...<tr>...12345...56789...54321...</tr>...";
Regex reg = new Regex(@"(?is)<tr>.*?</tr>");
Match m = reg.Match(s);
if(m.Success)
{
richTextBox2.Text = m.Value ;
}
/*-----输出------
<tr>...12345...56789...54321...</tr>
*/
Mr-Jee 2011-04-06
  • 打赏
  • 举报
回复
简明的写法是什么意思
你别举例子了。你就拿实际需求来说事吧
-过客- 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yzm888 的回复:]
s = "...<tr>...12345...56789...54321...</tr>..."

匹配 <tr>...12345...56789...54321...</tr> (<tr>只出现一次)

能有简洁的写法吗?
[/Quote]

<tr>只出现一次的话
(?is)<tr>.*?</tr>
验证码识别 2011-04-06
  • 打赏
  • 举报
回复
感谢楼上回复!

有简单的写法吗?

如果是

...为数目不定的任意字符

s = "...<tr>...12345...56789...54321...</tr>..."

匹配 <tr>...12345...56789...54321...</tr> (<tr>只出现一次)


能有简洁的写法吗?
Mr-Jee 2011-04-06
  • 打赏
  • 举报
回复
不会就是这个吧、
string s = "<tr>...<tr>...12345...</tr>...</tr>";
Regex reg = new Regex("(?i)<tr>((?!<tr>).)*?12345.*?</tr>");
Console.WriteLine(reg.Match(s).Value);
-过客- 2011-04-06
  • 打赏
  • 举报
回复
这样?

(?isn)<tr>((?!</?tr\b).)*12345((?!</?tr\b).)*</tr>


如果是取必须包含12345的
string s = "...<tr>...98765...</tr>......<tr>...12345...</tr>...<tr>...54321...</tr>...";
Regex reg = new Regex(@"(?isn)<tr>((?!</?tr\b).)*12345((?!</?tr\b).)*</tr>");
MatchCollection mc = reg.Matches(s);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
/*-----输出------
<tr>...12345...</tr>
*/


如果就是取<tr>...</tr>间的内容

string s = "...<tr>...98765...</tr>......<tr>...12345...</tr>...<tr>...54321...</tr>...";
Regex reg = new Regex(@"(?isn)<tr>((?!</?tr\b).)*</tr>");
MatchCollection mc = reg.Matches(s);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
/*-----输出------
<tr>...98765...</tr>
<tr>...12345...</tr>
<tr>...54321...</tr>
*/
-过客- 2011-04-06
  • 打赏
  • 举报
回复
<tr>和</tr>之间必须包含12345?还是什么意思?

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧