2

\10、\11 などの置換文字列が正しく読み取れないため、次のコードは機能しません。\10 を \1 として読み取り、代わりに 0 を出力します。修正を手伝ってもらえますか? スレッドの 1 つに、グループのキャプチャまたは名前付けを使用することになっているという回答がありますが、それらの使用方法がよくわかりません。

headline <- gsub("regexp with 10 () brackets",
"\\1 ### \\2 ### \\3 ### \\4 ### \\5 ### \\6 ### \\7 ### \\8 ### \\9 ###
\\10### \\11### \\12### \\13### \\14### \\15### \\16",
page[headline.index])
4

2 に答える 2

3

によると?regexp、名前付きキャプチャはR-2.14.0以降regexpr()で使用可能です。gregexpr()残念ながら、それはまだ利用できません。ですから、それでもあなたには役立つかもしれませんが、おそらくあなたが思っていたよりも少し多くの手間がかかるでしょう。sub()gsub()

(実際のグループの命名のいくつかの例については、の例のセクションを参照してください?regexpr。)

後で追加、GREGSNOWの回答に続く

Greg Snowは、gsubfnパッケージでこれを行う可能性をほのめかしました。gsubfn()これは、実際に9つを超える後方参照を処理できることを示す例です。

require(gsubfn)
string <- "1:2:3:4:5:6:7:8:9:10:11"
pat <- "^(\\d)+:(\\d)+:(\\d)+:(\\d)+:(\\d)+:(\\d)+:(\\d)+:(\\d)+:(\\d)+:(\\d)+:(\\d)+"
gsubfn(pat, ~ paste(a,b,c,d,e,f,g,h,i,j,k,j,i,h,g,f,e,d,c,e,a), string)  
# [1] "1 2 3 4 5 6 7 8 9 10 11 10 9 8 7 6 5 4 3 5 1"
于 2011-11-30T05:28:51.197 に答える
1

の代わりにパッケージgsubfnからの使用を検討することもできます。これにより、置換の作成方法に関するより多くのオプションが提供されます。gsubfngsub

于 2011-11-30T18:14:02.177 に答える