下面有一组字符串:
*H. NGUYEN1,J. S. 2,3,4,5,R. MOORE1 2,3,4,5,K. CAMPBELL2,3,4,5 2,3,4,5,S.MOORE1 1病理,2 2Mol。生理上。和生物物理,3 4Intrnl.,4 4Intrnl.医学大学。来自爱荷华州爱荷华市,IA;5霍华德休斯医学。艾奥瓦州爱荷华市
预期产出如下:
1)H. NGUYEN1,J. S. 2,3,4,5,R. MOORE1 2,3,4,5,K. CAMPBELL2,3,4,5 2,3,4,5,S.MOORE1 2)病理检查,2 2Mol。生理上。和生物物理,3 4Intrnl.,4 4Intrnl.医学大学。来自爱荷华州爱荷华市,IA;5霍华德休斯医学。艾奥瓦州爱荷华市
上面的字符串是作者名称和地址组合。
有时字符串在名称结束后包含(;),如S. MOORE1;;有时不包含S. MOORE1
我尝试了下面的Regex,但它并没有给出预期的结果。请帮帮我,因为我是Regex的学习者。
;?\d*\w+
模式是:
单词后面跟着数字,后面跟着分号或空格,后面跟着数字,然后是单词。对于Ex: S . MOORE1 (;;或Space)1Pathology.Need,将行拆分为S、.MOORE1和1病理学 谢谢
发布于 2012-10-05 18:03:07
试试这个:
(?<=\w\d)[; ](?=\d\w)它将匹配;或空格前面有一个字母,然后一个数字,然后一个数字和一个字母。
编辑:考虑到和;空格和可能的新行字符
(?<=[\w,]\d)[; ]+[\r\n\f]*(?=\d\w)下面是一个副手:http://refiddle.com/9ed
此外,还可以使用特普索测试正则表达式。
发布于 2012-10-05 17:39:43
试试这个:
(.*)S. MOORE1;{0,1}(.*)在"S. MOORE1“之前和之后捕获2组
发布于 2012-10-05 17:58:47
我读过你的描述很多次了,但我觉得不清楚。
我猜你最需要的是在一个以'1‘开头的单词之前,以大写字母作为第二个字符,这是非常简单的:
1[A-Z]https://stackoverflow.com/questions/12751240
复制相似问题