帮忙写个正则

dugupiaoyun 2009-03-01 03:06:16
一堆带乱码的数据里面如:
.d789.wG.S8E30991ۤ S[1]7135IIԦ^AejA-B-CiS88022 SG7#"JKxL?M N.G.R/4_-O_FS[2]8E30991ۤ@ 30991 00 S0_[4]88022 S#"JKxL.G.

现在我想从这段数据里把[1]....[4]里的数据包括"[1]"和"[4]"这几个字符都取出来,正则怎么写,另外在这段数据里还得有个判断,是否包含"[2]",如果有就取,没有“[2]”丢弃跳过继续找。
...全文
50 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
止戈而立 2009-03-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dugupiaoyun 的回复:]
[1]和[4]里面只有[2]不会再有重复的[1]和[4]以及[2],像[123]类似的不用管照取
[/Quote]

还是要写的,避免匹配到类似" [1]...[4]...[1]...[2]...[4]"这样一整个。

(?s)\[1\]((?!\[[12]\]).)*\[2\]((?!\[[14]\]).)*\[4\]
dugupiaoyun 2009-03-01
  • 打赏
  • 举报
回复
[1]和[4]里面只有[2]不会再有重复的[1]和[4]以及[2],像[123]类似的不用管照取
-过客- 2009-03-01
  • 打赏
  • 举报
回复
[1]和[4]之间会不会再有[1]或者类似于[123]这样的,取一组还是可能有多组,规则不是太明确

try...

Match m = Regex.Match(yourStr, @"\[1\]((?!\[\[34]\])[\s\S])*\[2\]((?!\[\[4]\])[\s\S])*\[4\]");
if (m.Success)
richTextBox2.Text = m.Value;
else
richTextBox2.Text = "没找个符合条件的内容";
止戈而立 2009-03-01
  • 打赏
  • 举报
回复
Try:

(?s)\[1\]((?!\[1\]|\[2\]).)*\[2\]((?!\[1\]|\[4\]).)*\[4\]
dugupiaoyun 2009-03-01
  • 打赏
  • 举报
回复
另外说下,上面的乱码是我随便找的打上去的,并不固定的。

110,536

社区成员

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

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

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