与えられた文字列str = "Senior Software Engineer (mountain view)"
最初の括弧に当たって「シニアソフトウェアエンジニア」を返すまで、どのようにすべてを一致させることができますか
これを^[^\(]+
一致させてからトリミングして、末尾のスペースを削除します
^[^\(]*
[^\(]
(
は、を除くすべてに一致する文字クラスであり*
、可能な限りクラスに一致する貪欲な一致です。先頭の^
は、文字列の先頭から一致します。
末尾の空白を避けるには、を試してください^.*?(?=\s\()
。
^(.*?)
文字列の先頭からできるだけ少ない文字に一致するように指示し、一致(?=\s\()
のもう一方の端を、文字列またはその前の空白をキャプチャせずに、親に固定します。
この単純な正規表現はRで使用できます。*\\(.*
str <- "Senior Software Engineer (mountain view)"
sub(" *\\(.*", "", str)
# [1] "Senior Software Engineer"
また、末尾の空白を回避します。
きちんとした方法...
library("stringr")
以下の出力は、リストを返します...
str_match_all(str, "^[^\\(]+")
文字列が必要な場合
str_match_all(str, "^[^\\(]+") %>% toString()
括弧の前後ですべてを一致させたい場合は、次のことを試してください。
探す: ^[^\(]+|(\)).*
交換者: \1
すべてのparanthesisを一致させて削除する場合は、次のことを試してください。
探す:\([^(\r\n]*?\)|\(|\)
交換者: (LEAVE EMPTY)
パッケージunglueは、読みやすい代替手段を提供します。
# install.packages("unglue")
library(unglue)
x <- "Senior Software Engineer (mountain view)"
unglue_vec(x,"{job} ({location})", var = "job")
#> [1] "Senior Software Engineer"
詳細:https ://github.com/moodymudskipper/unglue/blob/master/README.md