正则表达式强人请进.

树莓派 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 就是匹配的.

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

...全文
92 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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 = "不符合要求!";
}

111,092

社区成员

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

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

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