导航
  • 主页
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm
  • WPF
  • 问答

正则表达式强人请进.

树莓派 2009-10-15 09:41:16
我想问一个正则表达式
我想知道一个文本里面,是不是满足 含有关键字A,但是关键字A 之前又不能有关键字B 或 关键字C 怎么写
例如关键字A = AAA ,关键字B=BBB 关键字C=CCC
BBB CCC AAA 含有关键字A,但是关键字A之前有关键字B 和 关键字C 那么 这个就是不匹配的

EEE AAA DDD 就是匹配的.

逆向环视不是很明白写法,应该用那个吧......

...全文
69 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
树莓派 2009-10-16
这个是给VB.NET做代码折叠用的
比如 Sub AAA(byval Sender As .......) 这个时候,就有Sub 和 end ,不过,End 在后面,则这个就是段落首。

End Sub 的话 ,在 Sub 前面有 End ,这个就是段落尾部。

语法分析只能靠RegularExpression来做才比较灵活合适。
谁有现成的规则最好了。
回复
wackyboy 2009-10-16
[Quote=引用 4 楼 lcl_data 的回复:]
客客给的是只有有B或者C就不满足要求。
这个是必须同时又B和C才不满足要求。
C# codenamespace ConsoleApplication1
{class Test
{staticvoid Main()
{string A="AAA";string B="BBB";string C="CCC";string yourStr="DDDBBBAAA";
Regex reg=new Regex(@"(?is)^(?:(?!"+ Regex.Escape(B)+ Regex.Escape(C)+@"|"+ Regex.Escape(C)+ Regex.Escape(B)+@").)*"+ Regex.Escape(A));if (reg.IsMatch(yourStr))
{
Console.WriteLine("符合要求!");
}else
{

Console.WriteLine("不符合要求!");
}
}
}
}
[/Quote]

画蛇添足矣
不管你B和C是否同时存在,只要有一个那就不符合,
你的同时存在已经满足只要有一个存在条件,所以就不用再考虑两个同时存在的情况
回复
十八道胡同 2009-10-15
客客给的是只有有B或者C就不满足要求。
这个是必须同时又B和C才不满足要求。
namespace ConsoleApplication1
{
class Test
{
static void Main()
{
string A = "AAA";
string B = "BBB";
string C = "CCC";
string yourStr = "DDDBBBAAA";
Regex reg = new Regex(@"(?is)^(?:(?!" + Regex.Escape(B) + Regex.Escape(C) + @"|" + Regex.Escape(C) + Regex.Escape(B) + @").)*" + Regex.Escape(A));
if (reg.IsMatch(yourStr))
{
Console.WriteLine("符合要求!");
}
else
{

Console.WriteLine("不符合要求!");
}
}
}
}
回复
十八道胡同 2009-10-15
[Quote=引用楼主 visualbasic2000 的回复:]
我想问一个正则表达式
    我想知道一个文本里面,是不是满足  含有关键字A,但是关键字A 之前又不能有关键字B 或 关键字C 怎么写
    例如关键字A = AAA ,关键字B=BBB 关键字C=CCC
BBB CCC AAA  含有关键字A,但是关键字A之前有关键字B 和 关键字C 那么 这个就是不匹配的

EEE AAA DDD 就是匹配的.

逆向环视不是很明白写法,应该用那个吧......


[/Quote]
我只有关键字B或C 符合要求不?
回复
-过客- 2009-10-15
try...

string A = "AAA";
string B = "BBB";
string C = "CCC";
Regex reg = new Regex(@"(?is)^(?:(?!" + Regex.Escape(B) + @"|" + Regex.Escape(C) + @").)*" + Regex.Escape(A));
if (reg.IsMatch(yourStr))
{
richTextBox2.Text = "符合要求!";
}
else
{
richTextBox2.Text = "不符合要求!";
}
回复
-过客- 2009-10-15
try...

string A = "AAA";
string B = "BBB";
string C = "CCC";
Regex reg = new Regex(@"(?is)^(?:(?!" + Regex.Escape(B) + @"|" + Regex.Escape(C) + @").)*" + Regex.Escape(A));
if (reg.IsMatch(yourStr))
{
richTextBox2.Text = "符合要求!";
}
else
{
richTextBox2.Text = "不符合要求!";
}
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.