簡體   English   中英

使用正則表達式分割字符串

[英]Split String Using Regular Expression

我有以下一組字符串:

*H。 NGUYEN1,J.SATZ2,3,4,5,R.TURK2,3,4,5,K.CAMPBELL2,3,4,5,S.MOORE1
1病理學,2Mol。 生理學。 和生物物理學,3Neurol。,4Innl。 大學醫學 愛荷華州愛荷華州愛荷華州; 5霍華德·休斯醫學 愛荷華州愛荷華市研究所

預期的輸出是:

1)* H。 NGUYEN1,J.SATZ2,3,4,5,R.TURK2,3,4,5,K.CAMPBELL2,3,4,5,S.MOORE1
2)1病理,2摩爾。 生理學。 和生物物理學,3Neurol。,4Innl。 大學醫學 愛荷華州愛荷華州愛荷華州; 5霍華德·休斯醫學 愛荷華州愛荷華市研究所

上面的字符串是作者姓名和地址組合。
有時,字符串在名稱結尾之后包含(;),即S. MOORE1;。 有時不是S. MOORE1

我嘗試了下面的正則表達式,但沒有給出預期的結果。 因為我是Regex的學習者,所以請幫助我。

; [\\ d *] \\ W +

模式是:

單詞后跟數字,后跟分號或空格,后跟數字,后跟單詞。 例如:S. MOORE1(;或Space)1Pathology。需要將行拆分為S .MOORE1和1Pathology

謝謝

試試這個:

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

它將匹配; 或空格,其后是字母,然后是數字,然后是數字和字母。

編輯:考慮到和;空格和可能的換行符

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

這是一個斥責: http: //refiddle.com/9ed

您也可以使用Expresso測試正則表達式

試試這個:

(.*)S. MOORE1;{0,1}(.*)

在“ S. MOORE1”之前和之后捕獲2個組

我已經閱讀了很多次您的描述,但不清楚。

我最好的猜測是,您需要在以'1'開頭並以大寫字母作為第二個字符的單詞之前換行,這很簡單:

1[A-Z]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM