文字列内のスペースの後のすべてを削除したいと思います。
例えば:
"my string is sad"
戻る必要があります
"my"
私はsub/gsubを使用してこれを行う方法を見つけようとしてきましたが、これまでのところ成功していません。
strsplit("my string is sad"," ")[[1]][1]
または、最初のスペースの後ろにあるすべてのものを何にも置き換えません。
gsub(' [A-z ]*', '' , 'my string is sad')
そして数字で:
gsub('([0-9]+) .*', '\\1', c('c123123123 0320.1'))
次のような正規表現を使用できます
sub(" .*", "", x)
regex demo を参照してください。
ここで、sub
は単一の検索と置換操作のみを実行し、.*
パターンは最初のスペースを検索し(正規表現エンジンは文字列を左から右に検索するため)、.*
は一致します文字列の最後まで、0個以上の文字(TRE正規表現フレーバーでは、改行文字を含めても、Perl=TRUE
を使用する場合は注意してください。そうでない場合は、そうではありません)。
いくつかのバリエーション:
sub("[[:space:]].*", "", x) # \s or [[:space:]] will match more whitespace chars
sub("(*UCP)(?s)\\s.*", "", x, Perl=TRUE) # PCRE Unicode-aware regex
stringr::str_replace(x, "(?s) .*", "") # (?s) will force . to match any chars
オンラインRデモ を参照してください。
正規表現でそれを実行したい場合:
gsub('([A-z]+) .*', '\\1', 'my string is sad')