查看上一个主题 :: 查看下一个主题
|
作者 |
信息 |
abhit007
新的用户
.jpg)
已加入:2006年10月18日 帖子:10 地点:班加罗尔
|
|
|
|
嗨,大家好,
我在这里面临一个问题。我想编写一个REXX程序来提取报告中存在的所有电子邮件ID。例如。
XYZ.ABC.DEF.GIH(PS)
****************************************************** ************
此报告用于查找新的电子邮件ID
介绍了
****************************************************** ************
(ABC @ GMAIL.COM,ABC.XYZ @ GMAIL.COM) -
(SUPPORT@GMAIL.COM CARDSSD@GMAIL.COM)-
(REPORT@GMAIL.COM )-
(SUPPORT@GMAIL.COM )-
(XXXXXXXXXXX@GMAIL.COM) -
(SUPPORT@GMAIL.COM )-
(BONUS@GMAIL.COM, 产品@ YAHOO.CO.IN)-
从上面的报告中,我想选择所有电子邮件ID并以其他形式写为:
ABC@GMAIL.COM
ABC.XYZ@GMAIL.COM
支持@ GMAIL.COM
CARDSSD@GMAIL.COM
报告@ GMAIL.COM
支持@ GMAIL.COM
XXXXXXXXXXX@GMAIL.COM
支持@ GMAIL.COM
奖金@ GMAIL.COM
产品@ YAHOO.CO.IN
任何想法??
谢谢,
阿比舍克 |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
你被困在哪里....
在逻辑还是代码上? |
|
回到顶部 |
|
 |
abhit007
新的用户
.jpg)
已加入:2006年10月18日 帖子:10 地点:班加罗尔
|
|
|
|
首先,我对逻辑本身感到震惊。 :P |
|
回到顶部 |
|
 |
dbzTHEdinosauer
全球主持人

已加入:2006年10月20日 帖子:6967 位置:瓷宝座
|
|
|
|
1.
访问记录
隔离并存储电子邮件地址
更多记录?转到1
输出所有存储的电子邮件地址
您在cobol中的逻辑是什么?
为什么选择这个项目的REXX?
报告中有几行? |
|
回到顶部 |
|
 |
比尔·伍德格
主持人荣誉
加入时间:2011年3月9日 帖子:7311 位置:矩阵内部
|
|
|
|
标识第一个单词或按位置(%e-mail)开头的行。
删除第一个单词,左括号和右括号。
剩下的每个单词都当作电子邮件地址。 |
|
回到顶部 |
|
 |
普里诺 警告:1 高级会员

已加入:2009年2月7日 职位:1241 地点:立陶宛维尔纽斯
|
|
|
|
翻译所有非字母数字的'@'和'。并使用REXX的“单词”和“单词”功能。任何包含“ @”符号的“单词”都是(可能是)电子邮件地址。 |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
更快地编写/测试发布试图解释的代码
码: |
#!/ usr / bin / rexx
清单.1 = "%EMAIL (ABC @ GMAIL.COM,ABC.XYZ @ GMAIL.COM) "
清单.2 ="%EMAIL (SUPPORT@GMAIL.COM CARDSSD@GMAIL.COM) "
清单.3 ="%EMAIL (REPORT@GMAIL.COM ) "
清单.4 ="%EMAIL (SUPPORT@GMAIL.COM ) "
清单.5 ="%EMAIL (XXXXXXXXXXX@GMAIL.COM) "
清单.5 ="%EMAIL (SUPPORT@GMAIL.COM ) "
清单.6 ="%EMAIL (BONUS@GMAIL.COM, 产品@ YAHOO.CO.IN) "
清单.0 = 6
addr.0 = 0
do i = 1 to 清单.0
增益=清单.i
if left(buff,6) = "%EMAIL" then do
/ *检查正确分隔的列表* /
if (pos("(",buff)) = 0 | ,
(pos(")",buff)) = 0 then do
say " 不良的EMAIL记录" right(i,2) buff
iterate
结束
用解析var buff。"(" 清单 ")" .
/ *同时提供以逗号/ wsp分隔的地址* /
清单 = translate(list," ",",")
do j = 1 to 字s(list)
a = addr.0 + 1
addr.a = strip(word(list,j))
addr.0 = a
结束
结束
结束
do a = 1 to addr.0
say a addr.a
结束
|
如果输入格式更改,请自己做一些工作
例如,您可能需要从多卡列表中进行构建 |
|
回到顶部 |
|
 |
abhit007
新的用户
.jpg)
已加入:2006年10月18日 帖子:10 地点:班加罗尔
|
|
|
|
嗨,恩里科,
经过一些调整,您提供的代码可以正常工作。
我正在将报告从数据集中读入一个词干,然后运行您提供的代码以过滤出邮件地址。逗号和空格是唯一的分隔符。
由于不是一行中唯一的唯一内容,因此我删除了代码的第一段。但是,仍然存在一些小问题,因为它会采用特殊字符(例如“-”)并将其写在新行中。
大家好,
也感谢您的帮助。
非常感谢您的所有帮助。
阿比舍克 |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
发布一个示例,说明我的代码失败了,
我发布的代码段将正确解析括号内的任何列表
并正确构建单个外观,除非包含逗号或空格 |
|
回到顶部 |
|
 |
唐·雷西
活跃的成员
已加入:2010年7月6日 帖子:696 地点:加拿大安大略省惠特比
|
|
|
|
Enrico,请返回您的代码示例:在我的显示器上,小写字母“ l”和数字“ 1”在代码窗口中显示相同。
即,“ do l = 1到list.0”行看起来像“ do l = 1到list.0”  |
|
回到顶部 |
|
 |
比尔·伍德格
主持人荣誉
加入时间:2011年3月9日 帖子:7311 位置:矩阵内部
|
|
|
|
1l1l1l1l1l1l1l1l1l1
1l1l1l1l1l1l1l1l1l1
看来,这不仅仅是恩里科的东西。一个人发现它花了多少年(做得好,唐!)?从编码内容中复制/粘贴时,您将得到正确的选择(如上所述)(首先在预览中键入,复制/粘贴,编码,预览,从编码内容中复制/粘贴)。
还是这是最近的变化?我们怎么能知道:-)
编辑:无论如何,这是使用Firefox的。 |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
引用: |
Enrico,请返回您的代码示例:在我的显示器上,小写字母“ l”和数字“ 1”在代码窗口中显示相同。 |
这是某些字体的常见问题
我的代码示例按编码方式运作良好
出于礼貌,我编辑了要使用的代码 j 对于内循环和 i 对于外部 |
|
回到顶部 |
|
 |
dbzTHEdinosauer
全球主持人

已加入:2006年10月20日 帖子:6967 位置:瓷宝座
|
|
|
|
我个人从不使用单个alpha i,l或o作为变量
因为人们倾向于看到他们想要的
而不是那里。 |
|
回到顶部 |
|
 |
abhit007
新的用户
.jpg)
已加入:2006年10月18日 帖子:10 地点:班加罗尔
|
|
|
|
嗨,恩里科,
您的代码运行良好。我只需要更改它以适合我的需求。
大家好,
问题的下一部分:
现在,我必须从一个数据集中获取所有这些ID,然后在我的数据库(另一个数据集)中进行搜索以查找是否存在。如果不存在任何地址,则写入另一个文件。
该数据库也不是经过格式化的数据库,它具有随机的电子邮件ID,因此我们可能不得不使用POS或类似的工具。
你能帮忙吗?
谢谢,
阿比舍克 |
|
回到顶部 |
|
 |
佩德罗
全球主持人

已加入:2006年9月1日 帖子:2214 地点:硅谷
|
|
|
|
引用: |
该数据库也不是经过格式化的数据库,它具有随机的电子邮件ID,因此我们可能不得不使用POS或类似的工具。
|
1.将所有'(',')'和','更改为空白。
2.对于每行的每个单词,请使用POS功能查看它是否具有'@'字符。 |
|
回到顶部 |
|
 |
abhit007
新的用户
.jpg)
已加入:2006年10月18日 帖子:10 地点:班加罗尔
|
|
|
|
恩里科·索里切蒂写道: |
发布一个示例,说明我的代码失败了,
我发布的代码段将正确解析括号内的任何列表
并正确构建单个外观,除非包含逗号或空格 |
嗨,恩里科,
有一个问题。在某些情况下,括号不存在。例如
%YMAIL(XYZVITY @ GMAIL.COM,XG.RPCZPYRATIZNX @ GMAIL.COM,-
CZYRYL.CZIAM@GMAIL.COM,XYNGCZAI.CZAN @ GMAIL.COM,-
(DZZZA.AZMAD @ GMAIL.COM,MARIYTTA.BZZCZRRYJADZ @ GMAIL.COM,-
DYVAXXY.ATTZKARYN@GMAIL.COM,ALKA.JZA @ GMAIL.COM,-
AAAT.XINGZ3@GMAIL.COM,VIXZAL.ZJZA @ GMAIL.COM)-
FRZM(XYZVITY@GMAIL.COM)-
如何解析?
谢谢,
阿布舍克 |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
我记下有关...的信息。
暗示某种延续...
但是你必须设定一些规则 ...
从解析的角度来看,字符串连接/序列是一个表达式
并且在任何语言中,表达式中的括号必须保持平衡
您发布的示例不可解析,因为开括号和闭括号不平衡
如果您的输入错误,您不能责怪解析! |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
这是一个片段,它将解析一个正确的带括号的字符串
码: |
#!/ usr / bin / rexx
清单.1 = "%EMAIL (ABC @ GMAIL.COM,ABC.XYZ @ GMAIL.COM) "
清单.2 ="%EMAIL (SUPPORT@GMAIL.COM CARDSSD@GMAIL.COM -"
清单.3 ="REPORT@GMAIL.COM - "
清单.4 ="SUPPORT@GMAIL.COM ) "
清单.5 ="%EMAIL (XXXXX_XXX.XXX@somefuckng-strange.address.COM) "
清单.6 ="%EMAIL (SUPPORT@GMAIL.COM ) "
清单.7 ="%EMAIL (BONUS@GMAIL.COM, 产品@ YAHOO.CO.IN) "
清单.0 = 7
addr.0 = 0
indx = 1
增益=""
做一会儿( indx <= 清单.0 )
增益=strip(list.indx)
say indx "*1 " buff
indx = indx + 1
do while ( right(buff,1) = "-" & indx <= 清单.0 )
增益=strip(buff,,"-") strip(list.indx)
say indx "*2 " buff
indx = indx + 1
结束
/ *对最后一张卡进行错误的继续检查* /
say indx "*3 " buff
if left(buff,6) = "%EMAIL" then do
/ *检查正确分隔的列表* /
if (pos("(",buff)) = 0 | ,
(pos(")",buff)) = 0 then do
say "bad EMAIL record" right(indx,2) buff
iterate
结束
用解析var buff。"(" 清单 ")" .
/ *同时提供以逗号/ wsp分隔的地址* /
清单 = translate(list," ",",")
do i = 1 to 字s(list)
a = addr.0 + 1
addr.a = strip(word(list,i))
addr.0 = a
结束
结束
结束
do a = 1 to addr.0
say a addr.a
结束
|
|
|
回到顶部 |
|
 |
abhit007
新的用户
.jpg)
已加入:2006年10月18日 帖子:10 地点:班加罗尔
|
|
|
|
引用: |
您发布的示例不可解析,因为开括号和闭括号不平衡
|
嗨,恩里科,
(XYZVITY@GMAIL.COM,XG.RPCZPYRATIZNX@GMAIL.COM, -
CZYRYL.CZIAM@GMAIL.COM,XYNGCZAI.CZAN @ GMAIL.COM,-
DZZZA.AZMAD@GMAIL.COM,MARIYTTA.BZZCZRRYJADZ @ GMAIL.COM,-
DYVAXXY.ATTZKARYN@GMAIL.COM,ALKA.JZA @ GMAIL.COM,-
AAAT.XINGZ3@GMAIL.COM,VIXZAL.ZJZA @ GMAIL.COM)-
FRZM(XYZVITY@GMAIL.COM)-
忽略上一篇文章中的示例 ,请考虑括号平衡的示例。
由于存在多个ID,因此它将出现在多行中。
谢谢
阿比舍克 |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
那呢
引用: |
FRZM (XYZVITY@GMAIL.COM) |
? |
|
回到顶部 |
|
 |
阿努·达万(Anuj Dhawan)
高级会员

已加入:2006年4月22日 帖子:6250 地点:印度孟买
|
|
|
|
abhit007写道: |
忽略上一篇文章中的示例 ,请考虑括号平衡的示例。
由于存在多个ID,因此它将出现在多行中。 |
恩里科(Enrico),在远距离合同上工作吗?  |
|
回到顶部 |
|
 |
佩德罗
全球主持人

已加入:2006年9月1日 帖子:2214 地点:硅谷
|
|
|
|
我认为这是更简单的逻辑:
引用: |
1.将所有'(',')'和','更改为空白。
2.对于每行的每个单词,请使用POS功能查看它是否具有'@'字符。
|
|
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
引用: |
恩里科(Enrico),在远距离合同上工作吗? |
不!
编写扫描仪和解析器是我的首选主题之一
因此,当我看到相关内容时,我喜欢探索所有替代方法,不仅是工作,
但从扫描/解析算法的角度来看也不是小事
请继续关注,我有一个不错的摘要! |
|
回到顶部 |
|
 |
|