../some/thing/foobar/foobar.happening
私はこのようなパスを持っていてcharacter
、最後/
と.
.
これは一部の人にとっては簡単なことだと思いますが、正規表現などにはまだ慣れていません。おそらく を使用して自分でこれを行うこともできますがstrsplit
、可能であればエレガントなワンライナーを探しています。
前もって感謝します!
basename
最後のスラッシュの後の部分が表示されます。次に、ドットで分割できます(これは two でエスケープする必要があります\
)
> (name <- basename("../some/thing/foobar/foobar.happening"))
[1] "foobar.happening"
> unlist(strsplit(name, "\\."))
[1] "foobar" "happening"
次に、最初の要素を選択します
> unlist(strsplit(name, "\\."))[1]
[1] "foobar"
私はあなたが実際に 以外の方法を求めているのを見ましたstrsplit
. ここに正規表現があります
> sub(".*/([^/]+)\\..*", "\\1", "../some/thing/foobar/foobar.happening")
[1] "foobar"
.*
/
[^/]
(括弧内^
は「not」を意味します) が 1 回以上続き+
ます。 \\.
.*
。 [^/]+
次に、それを、スラッシュとドットの間のすべてである括弧内のものだけに置き換えます。は\\1
、括弧の最初のセット内のものを意味します。(この場合、セットは 1 つしかありませんが、2 番目のセットがあれば、 で参照できます\\2
)