2017-11-14 18 views
2

は、次の文字列を考えてみましょう。 /aaa-bbb-ccc/の前に出現する文字を削除したいと思います。たとえば、上記の最終製品は/aaa-bbb-ccc/def/ghi/jklである必要があります。マッチは、除く/ AAA-BBB-CCC/

私の試み、いくつかの検索後:

あなたが後で後方参照を復元するために怠惰なドットマッチングを使用してキャプチャグループとの既知の値をラップする必要が
x <- "tempo/blah/blah/aaa-bbb-ccc/def/ghi/jkl" 
sub("^.*[^/aaa-bbb-ccc/]", "", x) 
[1] "" 
+3

'[^/aaa-bbb-ccc /]'はあなたの考え方をしません。文字列全体ではなくクラス内の*単一文字*にのみマッチします。したがって、 '[^ -abc /]'はここでも同じです。 – Jan

答えて

4

x <- "tempo/blah/blah/aaa-bbb-ccc/def/ghi/jkl" 
sub(".*?(/aaa-bbb-ccc/)", "\\1", x) 
## [1] "/aaa-bbb-ccc/def/ghi/jkl" 

this R demoを参照してください。 。

は、可能な限り少ないように、任意の0+文字regex demo.*?試合を見る、そして(/aaa-bbb-ccc/)は置換パターンから\1とへの参照であるID = 1を有する撮影基です。

x <- "tempo/blah/blah/aaa-bbb-ccc/def/ghi/jkl" 
regmatches(x, regexpr("/aaa-bbb-ccc/.*", x)) 

this R demoを参照してください:あなたもエキスregmatches/regexprを使用して、その部分があり

注意。 .*は文字ベクトル全体の終わりまで0以上の文字をつかみます。

関連する問題