プロジェクト:Vim regex:上書きされた逆参照?
:はCSVにデータを入れ、執政官のWikipediaのリストを取るので、私はconsulageの面で
例データソースを様々な氏族の立ち上がりと立ち下がりのグラフを作ることができます
509,L. Iunius Brutus,L. Tarquinius Collatinus
suff.,Sp. Lucretius Tricipitinus,P. Valerius Poplicola
suff.,M. Horatius Pulvillus,
508,P. Valerius Poplicola II,T. Lucretius Tricipitinus
507,P. Valerius Poplicola III,M. Horatius Pulvillus II
Vimの検索:だから、基本的に
/\v(\d+|suff\.),((\w+\.=) (\w+)(\s\w+)=(\s\w+)=(\s[iv]+)=(\s\(.{-}\))=,=){,2}
:
- 最初(またはsuffect領事の表示)で、年間検索:
(\d+|suff\.)
- 次のグループは、(のは外側のグループを呼びましょう)2回まで発見される必要があります。これらのそれぞれについて
(outer group){,2}
- 二つの外側のグループ、見つける:オプションの期間と
- プラエノーメン、(時にはこれが存在しない):
(\w+.=)
- Nomen:すべてそうであるように
(\w+)
- オプションコグノーメンは(、スペースが含まれ):
(\s\w+)=
- 任意の年齢:
(\s\w+)=
- オプションの反復(彼が領事であったn番目の時間を示します)。 "Sicinius(?Sabinus)" のような
(\s[iv]+)=
- オプション説明文:
(最終コンマ
(\s\(.{-}\))=
- プラエノーメン、(時にはこれが存在しない):
:。
\1: year or suffect
\2: the entire second outer group
\3: Praenomen of second outer group (same with all below)
\4: Nomen
\5: Cognomen
\6: Agnomen
\7: Iteration
\8: Explanatory note
問題は、私はどのように把握することはできませんです最初の外側のグループをキャプチャします。 \ 2と\ 3- \ 8の参照は、その2番目の外部グループを参照すると上書きされます。これを使用する
は交換してください:
:%s//1:{\1}^I2:{\2}^I3:{\3}^I4:{\4}^I5:{\5}^I6:{\6}^I7:{\7}^I8:{\8}^I9:{\9}
を、私はこの出力を得る:
1:{509} 2:{L. Tarquinius Collatinus} 3:{L.} 4:{Tarquinius} 5:{ Collatinus} 6:{} 7:{} 8:{} 9:{}
1:{suff.} 2:{P. Valerius Poplicola} 3:{P.} 4:{Valerius} 5:{ Poplicola} 6:{} 7:{} 8:{} 9:{}
1:{suff.} 2:{M. Horatius Pulvillus,} 3:{M.} 4:{Horatius} 5:{ Pulvillus} 6:{} 7:{} 8:{} 9:{}
1:{508} 2:{T. Lucretius Tricipitinus} 3:{T.} 4:{Lucretius} 5:{ Tricipitinus} 6:{ II} 7:{} 8:{} 9:{}
1:{507} 2:{M. Horatius Pulvillus II} 3:{M.} 4:{Horatius} 5:{ Pulvillus} 6:{ II} 7:{} 8:{} 9:{}
私が第一の外側グループ内のこれらのグループにアクセスすることはできません。私は彼らが上書きされていると思います:上書きされていますか?もしそうなら、これを回避する方法はありますか?
編集: オリジナルタイトルVimの正規表現(または任意の互換性のある正規表現):外側のグループが繰り返される場合にどのように(グループ内の)グループを参照するために?
がリンク行方不明:http://en.wikipedia.org/wiki/List_of_Roman_consulsは – sehe