首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用正则表达式拆分字符串

使用正则表达式拆分字符串
EN

Stack Overflow用户
提问于 2012-10-05 17:30:53
回答 3查看 176关注 0票数 2

下面有一组字符串:

*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病理学 谢谢

EN

回答 3

Stack Overflow用户

发布于 2012-10-05 18:03:07

试试这个:

代码语言:javascript
运行
复制
(?<=\w\d)[; ](?=\d\w)

它将匹配;或空格前面有一个字母,然后一个数字,然后一个数字和一个字母。

编辑:考虑到和;空格和可能的新行字符

代码语言:javascript
运行
复制
(?<=[\w,]\d)[; ]+[\r\n\f]*(?=\d\w)

下面是一个副手:http://refiddle.com/9ed

此外,还可以使用特普索测试正则表达式。

票数 1
EN

Stack Overflow用户

发布于 2012-10-05 17:39:43

试试这个:

代码语言:javascript
运行
复制
(.*)S. MOORE1;{0,1}(.*)

在"S. MOORE1“之前和之后捕获2组

票数 0
EN

Stack Overflow用户

发布于 2012-10-05 17:58:47

我读过你的描述很多次了,但我觉得不清楚。

我猜你最需要的是在一个以'1‘开头的单词之前,以大写字母作为第二个字符,这是非常简单的:

代码语言:javascript
运行
复制
1[A-Z]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12751240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档