正则表达式如何对一串字符取反

孤岛旭日 2008-06-11 05:05:55
正则表达式如何对一串字符取反

如字符串组:aaaaISAXDEDDbcccddd
bbbbbbbbISAXDEDDaaa
ccccccccccccc
要从中筛选出不包括ISAXDEDD的字符串应该怎么写?

但有没有直接可以对ISAXDEDD取反的方法呀?



...全文
1321 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
leahb 2008-06-14
  • 打赏
  • 举报
回复
你的写法只能取道以 ISAXDEDD 结尾的字符串,LZ 好像不是要这样的。像你这样的,直接写成 .+(?=ISAXDEDD) 更简单
[Quote=引用 13 楼 lxcnn 的回复:]
引用 12 楼 leahb 的回复:
楼上想说啥,没看懂
本题用不到 (?!)(? <!)(?=)(? <=)


。。。

没有什么用到用不到的,一是看你会不会用,二是看是否有必要用
这道题不是用不到,而是没必要用

C# codestring[] src = new string[] { "aaaaISAXDEDDbcccddd", "bbbbbbbbISAXDEDDaaa", "ccccccccccccc" };
foreach (string s in src)
{
if (Regex.IsMatch(s, @"^(?:(?!ISAXDEDD)[\s\S])+$", RegexOptions.Igno…
[/Quote]
wuyi8808 2008-06-14
  • 打赏
  • 举报
回复
:)
-过客- 2008-06-14
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 leahb 的回复:]
你的写法只能取道以 ISAXDEDD 结尾的字符串,LZ 好像不是要这样的。像你这样的,直接写成 .+(?=ISAXDEDD) 更简单
[/Quote]

运行过我写的代码,看过结果再来说话吧

只是想纠正一下,免得你走入误区,却跟我争来争去,跟你讨论下去也没什么意思,目前连我写的正则是什么意思都看不懂。。。
孤岛旭日 2008-06-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 asdf311 的回复:]
。。。。。LZ 之 思想 有异 常人。

钻进牛角尖了吧!
[/Quote]

不是的,我们在用java时经常用正则表达式来过滤字符串数组,而用框架时正则表达式都写到xml文件中,我当然知道可以用java的代码来取反了,但这样有局限性。
SuperTyro 2008-06-13
  • 打赏
  • 举报
回复
关注下 帮顶上去

我是小菜鸟! 说的不好清见谅, 希望能够帮到你!
-过客- 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 leahb 的回复:]
楼上想说啥,没看懂
本题用不到 (?!)(? <!)(?=)(? <=)
[/Quote]

。。。

没有什么用到用不到的,一是看你会不会用,二是看是否有必要用
这道题不是用不到,而是没必要用
string[] src = new string[] { "aaaaISAXDEDDbcccddd", "bbbbbbbbISAXDEDDaaa", "ccccccccccccc" };
foreach (string s in src)
{
if (Regex.IsMatch(s, @"^(?:(?!ISAXDEDD)[\s\S])+$", RegexOptions.IgnoreCase))
richTextBox2.Text += s + "\n";
}


来而不往非礼也,楼上也用下面两个正则表达式之一来实现楼主的要求吧
[^(ISAXDEDD)]*
[^(ISAXDEDD)]+
leahb 2008-06-13
  • 打赏
  • 举报
回复
楼上想说啥,没看懂
本题用不到 (?!)(?<!)(?=)(?<=)
-过客- 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 leahb 的回复:]
[^(ISAXDEDD)]+
[/Quote]

再次无语。。。

[] 使用方括号[]包含一系列字符,能够匹配其中任意一个字符。用[^ ]包含一系列字符,则能够匹配其中字符之外的任意一个字符。同样的道理,虽然可以匹配其中任意一个,但是只能是一个,不是多个。
leahb 2008-06-13
  • 打赏
  • 举报
回复
[^(ISAXDEDD)]+
wheeler 2008-06-13
  • 打赏
  • 举报
回复
。。。。。LZ 之 思想 有异 常人。

钻进牛角尖了吧!
-过客- 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 leahb 的回复:]
[^(ISAXDEDD)]*
[/Quote]

这种写法是新手最容易犯的错误,多看看相关资料,自己也测试一下再这样回答吧
-过客- 2008-06-13
  • 打赏
  • 举报
回复
不用正则的话可以用
if(!...)

用正则的话可以用(?!),(?<!)和其它一些语法规则组合实现

先确定你是否确实需要用正则,不要为了用正则而用正则
leahb 2008-06-13
  • 打赏
  • 举报
回复
[^(ISAXDEDD)]*
孤岛旭日 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lxcnn 的回复:]
这种简单的功能当然不会提供专门的方法,自己用IndexOf写一个方法就是了

而且这个也完全没必要用正则,不要为了用正则而用正则,否则适得其反

如果你要判断的字符串不区分大小写,倒还可以考虑一下正则表达式
[/Quote]

我觉得这个不功能很实用,比如正则表达式可以很方便地表示出手机号码:(13[0-9]|15[36789]){1}\d*,但要筛选出非手机号码的话如果没有对一字符串取非的功能就比较麻烦了,我现在想到的是:(13[^0-9]|15[^36789]|1[^35]|[^1]){1}\d*
-过客- 2008-06-11
  • 打赏
  • 举报
回复
这种简单的功能当然不会提供专门的方法,自己用IndexOf写一个方法就是了

而且这个也完全没必要用正则,不要为了用正则而用正则,否则适得其反

如果你要判断的字符串不区分大小写,倒还可以考虑一下正则表达式
lovefootball 2008-06-11
  • 打赏
  • 举报
回复
bool s = Regex.IsMatch("12345", "12");
孤岛旭日 2008-06-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lovefootball 的回复:]
IndexOf不就行了么
[/Quote]

可以,不过我想知道正则表达式可不可做到,因为实际应用中经常用到
lovefootball 2008-06-11
  • 打赏
  • 举报
回复
IndexOf不就行了么

110,561

社区成员

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

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

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