Ответ 1
вы бы использовали ^[^\(]+
, чтобы сопоставить это, а затем обрезать его, чтобы удалить конечное пространство
Для строки str = "Senior Software Engineer (mountain view)"
Как я могу совместить все, пока не ударил первую скобку, вернув мне "Senior Software Engineer"
вы бы использовали ^[^\(]+
, чтобы сопоставить это, а затем обрезать его, чтобы удалить конечное пространство
^[^\(]*
[^\(]
- это класс символов, который соответствует всем, кроме (
, а *
- жадное соответствие, которое соответствует классу как можно дольше. ^
в начале совпадает с началом строки.
Чтобы избежать конечных пробелов, попробуйте ^.*?(?=\s\()
.
^(.*?)
указывает, что он соответствует как можно меньше символов, начиная с начала строки, а (?=\s\()
привязывает другой конец совпадения к вашему парну, не захватывая его или пробелы перед ним.
Вы можете использовать это простое регулярное выражение в R: *\\(.*
str <- "Senior Software Engineer (mountain view)"
sub(" *\\(.*", "", str)
# [1] "Senior Software Engineer"
Он также избегает конечных пробелов.
и если вы хотите сопоставить все до и после скобок, попробуйте это:
ПОИСК: ^[^\(]+|(\)).*
ЗАМЕНА НА: \1
и если вы хотите сопоставить все парантезы и удалить их, попробуйте это:
ПОИСК: \([^(\r\n]*?\)|\(|\)
ЗАМЕНА: (LEAVE EMPTY)
Тидиверс путь...
library("stringr")
Вывод ниже, вернет вам список...
str_match_all(str, "^[^\\(]+")
Если вам нужно в строке
str_match_all(str, "^[^\\(]+") %>% toString()