以下に示すa
のような文字列があります。私はの最初の文字列の一部を最初に抽出する必要があります//
と最初の後に/
です。私はsub
とperl = F
を使用しますが、それは約の約4倍です。だから私はperl = T
を試して、文字列の終わりから検索が始まることが分かった??R sub with perl - 後方検索を開始しますか?
a = "https://moo.com/meh/woof//A.ds.serving/hgtht//ghhg/tjtke"
print(gsub(".*//(.*?)/.*","\\1",a))
"moo.com"
print(gsub(".*//(.*?)/.*","\\1",a,perl=T))
"ghhg"
moo.com
です。私はこれを見て非常に驚いています - それはどこかで文書化されていますか? perl
で再書き込みするにはどうすればいいですか?20M行で作業する必要があり、速度が重要です。ありがとう!
編集:それはすべての文字列がhttp
あなたは 'urltools'パッケージについて知りましたか?そのようなタスクに便利になる – Sotos
TRE正規表現では、怠惰な量詞を欲張りなものと混ぜることはお勧めできません。場合によっては、期待どおりに動作しますが、動作しない場合もあります。そのような状況では 'perl = TRUE'を使い、'。* 'は可能な限り多くの文字にマッチし、'。*? 'は可能な限り少数の文字にマッチしますが、' perl = TRUE'改行記号には一致しません。それが必要な場合は、パターン開始時に '(?s)'を追加します。 –