高分求一正则表达式

stonegoldaustin 2009-11-03 01:25:06
高分求一正则表达式

要求:有一字符串“xx description xxx....”,求验证该字符串中不包括“description”的正则表达式

满足即给分,多谢!
...全文
123 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
stonegoldaustin 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lxcnn 的回复:]
要验证整个字符串不包含,还是每一行是否包含?


C# codestring strERX=@"aa2009-09-25 11:04:34
M 1 COMPLD
EN=0 ENDESC=执行成功
UserType=VLAN,AdminStatus=1,OutVlan=2561,VlanID=256,LoopBack=5,InputPolicy=pro3M,OuputPolicy=pro3M,Profile=,IP=125.70.231.9
----------------------------------------
<SAVE=1,ENDFLAG=#,TIMEOUT=120> <COMMAND= <10>show configuration interface gigabitEthernet 12/0.125610256 | begin 12/0.125610256/>*/
12/0.125610256
!
svlan id 2561 256
svlan ethertype 8100
ip description 79942234/3M/20090925/tongbu/g/12/0.256
ip unnumbered loopback 5
ip policy input pro3M
ip policy output pro3M


BAS-EY2F-ERX1440-2#
<SAVE=1,ENDFLAG=#,TIMEOUT=300/> <COMMAND= <10>sh conf ca ip | inc Ethernet12/0.125610256/>*/
sh conf ca ip | inc Ethernet12/0.125610256
ip route 125.70.231.9 255.255.255.255 GigabitEthernet12/0.125610256

BAS-EY2F-ERX1440-2#

----------------------------------------
;";
Regex reg=new Regex(@"(?is)^(?>(?:(?!description).)*)$");if (reg.IsMatch(strERX))
{
richTextBox2.Text="不包含!";
}else
{
richTextBox2.Text="包含!";
}/*--------输出------------
包含!*/
[/Quote]

感谢,您这个测试通过了
-过客- 2009-11-03
  • 打赏
  • 举报
回复
那13楼代码是否满足需求,如不满足,给出实例
stonegoldaustin 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lxcnn 的回复:]
要验证整个字符串不包含,还是每一行是否包含?


C# codestring strERX=@"aa2009-09-25 11:04:34
M 1 COMPLD
EN=0 ENDESC=执行成功
UserType=VLAN,AdminStatus=1,OutVlan=2561,VlanID=256,LoopBack=5,InputPolicy=pro3M,OuputPolicy=pro3M,Profile=,IP=125.70.231.9
----------------------------------------
<SAVE=1,ENDFLAG=#,TIMEOUT=120> <COMMAND= <10>show configuration interface gigabitEthernet 12/0.125610256 | begin 12/0.125610256/>*/
12/0.125610256
!
svlan id 2561 256
svlan ethertype 8100
ip description 79942234/3M/20090925/tongbu/g/12/0.256
ip unnumbered loopback 5
ip policy input pro3M
ip policy output pro3M


BAS-EY2F-ERX1440-2#
<SAVE=1,ENDFLAG=#,TIMEOUT=300/> <COMMAND= <10>sh conf ca ip | inc Ethernet12/0.125610256/>*/
sh conf ca ip | inc Ethernet12/0.125610256
ip route 125.70.231.9 255.255.255.255 GigabitEthernet12/0.125610256

BAS-EY2F-ERX1440-2#

----------------------------------------
;";
Regex reg=new Regex(@"(?is)^(?>(?:(?!description).)*)$");if (reg.IsMatch(strERX))
{
richTextBox2.Text="不包含!";
}else
{
richTextBox2.Text="包含!";
}/*--------输出------------
包含!*/
[/Quote]

整个不包括
stonegoldaustin 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lxcnn 的回复:]
按道理说楼主的需求应该不仅仅是验证是否包含description这一单词这么简单,否完完全没必要用正则表达式

[/Quote]

是的,如果只是简单的判断是不是包含某字符串,绝不会跑到这里来问了,网上也搜了不少的资料,都没有满足的,很郁闷啊
sharpe 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 stonegoldaustin 的回复:]
引用 11 楼 wackyboy 的回复:
C# codestring input;bool b= Regex.Ismatch(input,"(?si)^(?!.*description)");//input = "xx description xxx...."; b=false////input = "xx adescription xxx...."; b=true


感谢您的回帖,不过用这个表达式,我这里还是没有通过,现贴出代码供参考
C# codestring strERX=@"2009-09-25 11:04:34
M 1 COMPLD
EN=0 ENDESC=执行成功
UserType=VLAN,AdminStatus=1,OutVlan=2561,VlanID=256,LoopBack=5,InputPolicy=pro3M,OuputPolicy=pro3M,Profile=,IP=125.70.231.9
----------------------------------------
<SAVE=1,ENDFLAG=#,TIMEOUT=120><COMMAND=<10>show configuration interface gigabitEthernet 12/0.125610256 | begin 12/0.125610256/>*/
12/0.125610256
!
svlan id 2561 256
svlan ethertype 8100
ip description 79942234/3M/20090925/tongbu/g/12/0.256
ip unnumbered loopback 5
ip policy input pro3M
ip policy output pro3M


BAS-EY2F-ERX1440-2#
<SAVE=1,ENDFLAG=#,TIMEOUT=300/><COMMAND=<10>sh conf ca ip | inc Ethernet12/0.125610256/>*/
sh conf ca ip | inc Ethernet12/0.125610256
ip route 125.70.231.9 255.255.255.255 GigabitEthernet12/0.125610256

BAS-EY2F-ERX1440-2#

----------------------------------------
;";string strRexExpress=@"(?si)^(?!.*description)";

Regex reg=new Regex(strRexExpress, RegexOptions.IgnoreCase| RegexOptions.IgnorePatternWhitespace| RegexOptions.Multiline);if (reg.IsMatch(strERX))
{
MessageBox.Show("match!");
}

无论是否存在description,都返回true
[/Quote]

你的正则跟lxcnn给的不一样。。。楼主仔细看啊,我测试lxcnn的是可以的
sharpe 2009-11-03
  • 打赏
  • 举报
回复

var regex =/^.*description.*$/;
alert(!regex.test("sfdsf description sdfds"));



你正则表达是匹配,然后程序再非判断
-过客- 2009-11-03
  • 打赏
  • 举报
回复
按道理说楼主的需求应该不仅仅是验证是否包含description这一单词这么简单,否完完全没必要用正则表达式
stonegoldaustin 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wackyboy 的回复:]
C# codestring input;bool b= Regex.Ismatch(input,"(?si)^(?!.*description)");//input = "xx description xxx...."; b=false////input = "xx adescription xxx...."; b=true
[/Quote]

感谢您的回帖,不过用这个表达式,我这里还是没有通过,现贴出代码供参考

string strERX = @"2009-09-25 11:04:34
M 1 COMPLD
EN=0 ENDESC=执行成功
UserType=VLAN,AdminStatus=1,OutVlan=2561,VlanID=256,LoopBack=5,InputPolicy=pro3M,OuputPolicy=pro3M,Profile=,IP=125.70.231.9
----------------------------------------
<SAVE=1,ENDFLAG=#,TIMEOUT=120><COMMAND=<10>show configuration interface gigabitEthernet 12/0.125610256 | begin 12/0.125610256/>*/
12/0.125610256
!
svlan id 2561 256
svlan ethertype 8100
ip description 79942234/3M/20090925/tongbu/g/12/0.256
ip unnumbered loopback 5
ip policy input pro3M
ip policy output pro3M


BAS-EY2F-ERX1440-2#
<SAVE=1,ENDFLAG=#,TIMEOUT=300/><COMMAND=<10>sh conf ca ip | inc Ethernet12/0.125610256/>*/
sh conf ca ip | inc Ethernet12/0.125610256
ip route 125.70.231.9 255.255.255.255 GigabitEthernet12/0.125610256

BAS-EY2F-ERX1440-2#

----------------------------------------
;";


string strRexExpress = @"(?si)^(?!.*description)";

Regex reg = new Regex(strRexExpress, RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline);

if (reg.IsMatch(strERX))
{
MessageBox.Show("match!");
}


无论是否存在description,都返回true
-过客- 2009-11-03
  • 打赏
  • 举报
回复
要验证整个字符串不包含,还是每一行是否包含?


            string strERX = @"aa2009-09-25 11:04:34 
M 1 COMPLD
EN=0 ENDESC=执行成功
UserType=VLAN,AdminStatus=1,OutVlan=2561,VlanID=256,LoopBack=5,InputPolicy=pro3M,OuputPolicy=pro3M,Profile=,IP=125.70.231.9
----------------------------------------
<SAVE=1,ENDFLAG=#,TIMEOUT=120> <COMMAND= <10>show configuration interface gigabitEthernet 12/0.125610256 | begin 12/0.125610256/>*/
12/0.125610256
!
svlan id 2561 256
svlan ethertype 8100
ip description 79942234/3M/20090925/tongbu/g/12/0.256
ip unnumbered loopback 5
ip policy input pro3M
ip policy output pro3M


BAS-EY2F-ERX1440-2#
<SAVE=1,ENDFLAG=#,TIMEOUT=300/> <COMMAND= <10>sh conf ca ip | inc Ethernet12/0.125610256/>*/
sh conf ca ip | inc Ethernet12/0.125610256
ip route 125.70.231.9 255.255.255.255 GigabitEthernet12/0.125610256

BAS-EY2F-ERX1440-2#

----------------------------------------
;";
Regex reg = new Regex(@"(?is)^(?>(?:(?!description).)*)$");
if (reg.IsMatch(strERX))
{
richTextBox2.Text = "不包含!";
}
else
{
richTextBox2.Text = "包含!";
}
/*--------输出------------
包含!
*/
HDNGO 2009-11-03
  • 打赏
  • 举报
回复
<SCRIPT LANGUAGE="JavaScript">
var re = new RegExp("^((?!description).)*$", "");
var str1 = re.test("ip description 79942234/3M/20090925/tongbu/g/12/0.256 ");
alert(str1);
</SCRIPT>


返回false,证明存在
wackyboy 2009-11-03
  • 打赏
  • 举报
回复

string input;
bool b = Regex.Ismatch(input, "(?si)^(?!.*description)");

//input = "xx description xxx...."; b=false
////input = "xx adescription xxx...."; b=true
HDNGO 2009-11-03
  • 打赏
  • 举报
回复
<SCRIPT LANGUAGE="JavaScript">
var re = new RegExp("^((?!description).)*$", "");
var str1 = re.test("xx description xxx....");
var str2 = re.test("aaaaaaaaaaaaaaa");
alert(str1);
alert(str2);
</SCRIPT>


第一个false
第二个true
stonegoldaustin 2009-11-03
  • 打赏
  • 举报
回复
ip description 79942234/3M/20090925/tongbu/g/12/0.256

就是要匹配这行没有description
stonegoldaustin 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hdngo 的回复:]
C# codeRegex re=new Regex(@"^((?!description).)*$");bool yesorno= re.IsMatch("your string");
[/Quote]

我用您的方法试了一次,还是不行,我把字符串完整贴出来,请大家帮忙看看

string strERX = @"aa2009-09-25 11:04:34
M 1 COMPLD
EN=0 ENDESC=执行成功
UserType=VLAN,AdminStatus=1,OutVlan=2561,VlanID=256,LoopBack=5,InputPolicy=pro3M,OuputPolicy=pro3M,Profile=,IP=125.70.231.9
----------------------------------------
<SAVE=1,ENDFLAG=#,TIMEOUT=120><COMMAND=<10>show configuration interface gigabitEthernet 12/0.125610256 | begin 12/0.125610256/>*/
12/0.125610256
!
svlan id 2561 256
svlan ethertype 8100
ip description 79942234/3M/20090925/tongbu/g/12/0.256
ip unnumbered loopback 5
ip policy input pro3M
ip policy output pro3M


BAS-EY2F-ERX1440-2#
<SAVE=1,ENDFLAG=#,TIMEOUT=300/><COMMAND=<10>sh conf ca ip | inc Ethernet12/0.125610256/>*/
sh conf ca ip | inc Ethernet12/0.125610256
ip route 125.70.231.9 255.255.255.255 GigabitEthernet12/0.125610256

BAS-EY2F-ERX1440-2#

----------------------------------------
;";

stonegoldaustin 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wuyq11 的回复:]
var regex =/^(?!description $)/;
alert(regex.test("description "));

\b((?!description )\w)+\b
[^?!description ]+
或contains
[/Quote]

首先感谢,但是经测试没有通过,第一种无论有无"description"都返回false,第二种则相反,全部返回true,不知道您测试过没有?
HDNGO 2009-11-03
  • 打赏
  • 举报
回复
Regex re = new Regex(@"^((?!description).)*$");
bool yesorno = re.IsMatch("your string");
HDNGO 2009-11-03
  • 打赏
  • 举报
回复
^((?!description).)*$
wuyq11 2009-11-03
  • 打赏
  • 举报
回复
var regex =/^(?!description $)/;
alert(regex.test("description "));

\b((?!description )\w)+\b
[^?!description ]+
或contains
stonegoldaustin 2009-11-03
  • 打赏
  • 举报
回复
代码要求如此,能换方式,俺也不会跑这里来了
ivws_19 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hdngo 的回复:]
。。。你判断个包括,然后else一下不就好了?
[/Quote]
是啊,if(str.contains("description"))
加载更多回复(1)

110,567

社区成员

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

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

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