2

以下の文字列のセットがあります:

*H. NGUYEN1、J. SATZ2,3,4,5、R. TURK2,3,4,5、K. CAMPBELL2,3,4,5、S. MOORE1
1 病理学、2Mol. 生理。and Biophysics, 3Neurol., 4Intrnl. 医学部 アイオワ州アイオワシティ、アイオワ州。5 ハワード・ヒューズ医学. 研究所、アイオワシティ、アイオワ州

予想される出力は次のとおりです。

1) *H. NGUYEN1、J. SATZ2,3,4,5、R. TURK2,3,4,5、K. CAMPBELL2,3,4,5、S. MOORE1
2) 1病理学、2Mol. 生理。and Biophysics, 3Neurol., 4Intrnl. 医学部 アイオワ州アイオワシティ、アイオワ州。5 ハワード・ヒューズ医学. 研究所、アイオワシティ、アイオワ州

上記の文字列は、著者名と住所の組み合わせです。
文字列の名前の末尾に (;) が含まれることがあります。たとえば、S.MOORE1; S. MOORE1

以下の正規表現を試しましたが、期待どおりの結果が得られませんでした。私は正規表現の学習者なので、助けてください。

;?[\d*]\w+

パターンは:

単語の後に数字が続き、セミコロンが続くか、スペースの後に数字が続き、単語が続きます。例: S.MOORE1(; または Space)1Pathology.S.MOORE1 と 1Pathology として行を分割する必要があります

ありがとう

4

3 に答える 3

1

これを試してください:

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

一致します。またはスペースの前に文字、次に数字、次に数字と文字が続きます。

編集: 、および;スペースと可能な改行文字を考慮して

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

ここにリドルがあります:http://refiddle.com/9ed

また、Expressoを使用して正規表現をテストすることもできます

于 2012-10-05T18:03:07.700 に答える
0

これを試してください:

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

「S.MOORE1」前後の2グループをキャッチ

于 2012-10-05T17:39:43.373 に答える
0

あなたの説明を何度も読みましたが、はっきりとはわかりません。

必要なのは、「1」で始まる単語の前で改行し、2 番目の文字として大文字を続けることです。これは次のように簡単です。

1[A-Z]
于 2012-10-05T17:58:47.733 に答える