c# - 使用正则表达式拆分字符串

标签 c# regex

我有一组下面的字符串:

*H. NGUYEN1, J. SATZ2,3,4,5, R. TURK2,3,4,5, K. CAMPBELL2,3,4,5, S. MOORE1
1Pathology, 2Mol. Physiol. and Biophysics, 3Neurol., 4Intrnl. Med., Univ. of Iowa, Iowa City, IA; 5Howard Hughes Med. Inst., Iowa City, IA

预期的输出是:

1)  *H. NGUYEN1, J. SATZ2,3,4,5, R. TURK2,3,4,5, K. CAMPBELL2,3,4,5, S. MOORE1
2)  1Pathology, 2Mol. Physiol. and Biophysics, 3Neurol., 4Intrnl. Med., Univ. of Iowa, Iowa City, IA; 5Howard Hughes Med. Inst., Iowa City, IA

上面的字符串是作者姓名和地址的组合。
有时字符串在名称结束后包含 (;),即 S。 MOORE1; 有时不是,即 S.摩尔1

我尝试了下面的正则表达式,但没有给出预期的结果。请帮助我,因为我是正则表达式的学习者。

;?[\d*]\w+

模式是:

Word followed by digit followed by semicolon or space followed by digit followed by words . For Ex: S. MOORE1(; Or Space)1Pathology.Need to split lines as S .MOORE1 and 1Pathology

Thanks

最佳答案

试试这个:

(?<=\w\d)[; ](?=\d\w)

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

编辑:考虑到 , 和 ;空格和可能的换行符

(?<=[\w,]\d)[; ]+[\r\n\f]*(?=\d\w)

这是一个 refiddle:http://refiddle.com/9ed

您也可以使用 Expresso用于测试正则表达式

关于c# - 使用正则表达式拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12751240/

相关文章:

javascript - 正则表达式从 CSS 选择器字符串中提取 HTML5 类

java - 正则表达式java模式不验证?

PHP 和正则表达式 : Split a string by commas that are not inside brackets (and also nested brackets)

c# - 正则表达式在 C# 中不匹配

c# - 业务逻辑层应该访问数据库/数据访问层吗?

c# - 读取多条记录以计算点之间的最短距离时出错

java - 用前面带有特定单词的逗号分割字符串

c# - 任务执行去哪里了?

c# - 在mef中卸载一个dll文件

windows - findstr 中的正则表达式