读书人

关于正则表达式的写法解决方案

发布时间: 2012-02-11 09:51:35 作者: rapoo

关于正则表达式的写法
1-我现在需要在一个字符串中查找一些指定的字符串,这种查找的表达式写法应该是:字符串1|字符串2|字符串3 对吧?

2-然后还需要一种匹配是查找指定的字符串并且前面没有否定的词之类的。例如:
查找“成功”这个串,但是前面不能有“不”,“没有”这类否定词。这样的表达式该怎么写呢?

3-我现在有一个很大的表,里边按照不同的类型存储了很多表达式,现在是用户的需求一直在变。也就是说每天都有可能往里边增加一些可能匹配的字符串。例如:今天他们觉得“肿瘤”,“病变”是疾病的表现,明天他们可能又发现“炎症”这个词也是疾病的表现,也应该加进去。这样维护起来非常麻烦。请问大家有什么好的方法没有?

另外我没用过正则表达式,大家能给介绍下吗?或者给些入门资料

[解决办法]
用正则表达式完全能够实现
你百度 regexpr,在Delphi下就能够使用了.并有demo参考.

然后找一个正则表达式的教程,系统学习下.在这里很难一句半句的说明白的.

至于第三个问题,你写个维修正则表达式的程序,让使用者自己加入删除关键字,然后程序生成表达式字符串,保存到数据库中,这个在掌握正则表达式后,不难实现.

不要指望别人,自己掌握了才行.

[解决办法]
1、在Delphi中引入 "Microsoft VBScript Regular Expressions "
主菜单-> Project-> Import type library-> 在列表中选择 "Microsoft VBScript Regular Expressions ",生成TRegExp控件。
2、
procedure TForm1.Button1Click(Sender: TObject);
var
machs: IMatchCollection;
Matchs: Match;
submatch: ISubMatches;
i, j: integer;
begin
RegExp1.Global := true;
RegExp1.Pattern := '\w+\.\w+(?!.) ';
RegExp1.IgnoreCase := true;
machs := RegExp1.Execute( 'http://www.xcolor.cn/dd/page1.htm ') as IMatchCollection;
for i := 0 to machs.Count - 1 do
begin
Matchs := machs.Item[i] as Match;
submatch := Matchs.SubMatches as ISubMatches;
memo1.Lines.Add(matchs.Value);
end;



[解决办法]
就用MS的那个吧,要不就用TPerlRegEx.不同的语言支持是不一样的,具体你自己查一下.
[解决办法]
楼主书写错误,
你最好系统的学习下正则表示式后,就好了.我当时也就一个下午就搞定.
[解决办法]
可以参考下微软的正则表达式教程,还是挺全的
http://blog.18883.com/blog/archives/article-217.html
[解决办法]
'^a[a]*b$'

读书人网 >.NET

热点推荐