100大元悬赏,救救我的工作吧?

JoeChen 2007-12-06 03:51:05
马上就要交差了,可以一点头绪都没有。刚工作,看样子饭碗难保啊。

大侠们帮忙啊?奉上50元茶钱。谢谢,谢谢啦~~救救我...

任务是这样的,关于正则表达式提取的。delphi程序。

设计一个函数提取字符串段落中的姓名、电话、手机、地址、省、市、区、邮编

【用例一】:
姓 名:  张大先
电 话:  010-80602028
手 机:  (0)13733258975
收货地址: 省:北京 市:北京市 区:东城区
河水胡同331号
邮政编码: 100098

【用例二】:
收货信息: 刘晓民 天津宝坻区 宝坻3区1578号(512221)
手机:13332515877 电话:021-34554889

【用例三】:
地址:湖北 武汉 江汉区汉中路1587号
邮编:123456
姓名:刘先生
电话:013789542113


我的思路是建立一些正则表达式的模板匹配。但是不知道怎么下手。书到用时方恨少啊~~~

...全文
226 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuihan20e 2007-12-17
  • 打赏
  • 举报
回复
格式最好是固定的,如果这其中混合多种格式,程序恐怕实现不了啊
JoeChen 2007-12-16
  • 打赏
  • 举报
回复
或者有更好的办法?
JoeChen 2007-12-16
  • 打赏
  • 举报
回复
为什么用正则表达式?我想做一个基于模板提取的块。这样格式就可以千变万化,我只要根据新用例设计模板就可以了。

流程是这样的:

1、定义一个地址类
/// AddType.Address
/// AddType.Phone
/// AddType.Handset
/// addType.Province
/// addType.PersonName
/// addType.ZipCode

2、根据匹配模板填充地址类
s:='收货地址串';
for i=0 to temelateListCount-1 do begin
AddType:=InfoDecode(s,temelateList[i]);
end;

3、这样做的好处
模板是字符串,存在数据库中。
后续发现新用例只要,写出新的用例增加到数据库中,而不要改程序。

如此实现通用的地址提取功能。至于有的项目匹配不上或缺失,可以为空,甚至允许少数几项的错配。


我表达清楚了吗?工作看样子要丢了~~~
jfslan 2007-12-12
  • 打赏
  • 举报
回复
需求不明确!!

比如
用例二】:
收货信息: 刘晓民 天津宝坻区 宝坻3区1578号(512221)
手机:13332515877 电话:021-34554889

打死我都不可能知道 刘晓民 后面是区。

如果有这样的情况呢:
收货信息: 刘晓民 天津宝坻3区 1578号(512221)


Corn1 2007-12-12
  • 打赏
  • 举报
回复
我觉得有难度。比如说用例二,刘晓民 天津宝坻区 宝坻3区1578号(512221)
怎么提取出姓名、市、区、地址、邮编?
shuihan20e 2007-12-12
  • 打赏
  • 举报
回复
不难实现,可以直接分析字符串,给你一个函数吧,原来我写的,不过不一定完全符合你的要求,自己搞下吧
按楼主这样的水平,这个饭碗早完砸掉...
努力吧,希望能保住饭碗


思路很简单的,先将内容读到一个Memo里,一个一个截取就是了
//分离字符串
function SplitText(Memo:TMemo;Text1,Text2:string):string;
var str:string;
strpos1,strpos2:integer;
begin
//Memo.Lines.LoadFromFile(FileName);
str:=Trim(Memo.Lines.Text);
//ShowMessage(str);
Memo.Lines.Text :=Trim(str);
strpos1:=pos(Text1,str);
//ShowMessage(IntToStr(strpos1));
Delete(str,1,strpos1-1+Length(Text1));
Memo.Lines.Text :=str;
str:=Trim(str);
//ShowMessage(str);
strpos2:=pos(Text2,str);
//ShowMessage(IntToStr(strpos2));
Result:=Trim(Copy(str,1,strpos2-1));
end;

钱不用给了,多给点分吧
SonicX 2007-12-12
  • 打赏
  • 举报
回复
pos分析下关键字就好了


ps:按楼主这样的水平,这个饭碗早完砸掉...
ytao_1982 2007-12-08
  • 打赏
  • 举报
回复
笨!
hawk_e2e 2007-12-08
  • 打赏
  • 举报
回复
需要用到正则表达式吗?当然能用是最好,现在问题是用不来嘛?
不要那么死板,直接判断不行吗?
有句话叫:聪明的程序员用DELPHI。呵呵
dirt 2007-12-07
  • 打赏
  • 举报
回复
没那50大洋我就回答了。。
oushengfen 2007-12-07
  • 打赏
  • 举报
回复
这个应该很容易啊,直接判断不就行了吧,还至于用正则表达式吗
neweipeng 2007-12-06
  • 打赏
  • 举报
回复
【用例二】要分析出地址、省、市、区、邮编有些难度
其他的通过判别“:”前的名称很容易提取
JoeChen 2007-12-06
  • 打赏
  • 举报
回复
里面的姓名和地址等要提取的信息肯定是变化的啦
sdzeng 2007-12-06
  • 打赏
  • 举报
回复
delphi中使用正则表达式,具体的表达式得自己想办法了
http://blog.csdn.net/wang37758724/archive/2007/08/08/1732078.aspx
imho888 2007-12-06
  • 打赏
  • 举报
回复
如果定死了就这三种的话那比较简单呀,如果随机的话就麻烦了。
ly_liuyang 2007-12-06
  • 打赏
  • 举报
回复
一般的字符串分析就能搞定啦~很基础的哦
hui717 2007-12-06
  • 打赏
  • 举报
回复
也很简单呀,自己与个函数就实现了.

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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