Выберите строку, заканчивающуюся первым символом в регулярных выражениях.
Скажем, у меня есть следующая строка:
pos/S881.LMG1810.QE009562.mzML
И хотите 9X_apache-regexp выбрать начало этой строки:
pos/S881.
Я могу использовать 9X_regular-expression следующее регулярное выражение, чтобы получить 9X_apache-regexp начало строки (^), затем любой символ (.), любое 9X_perl-regex количество раз (*), заканчивающееся десятичной 9X_regularexpression точкой (\.)
^.*\.
Однако это заканчивается последним 9X_r-language десятичным знаком в строке и, таким образом, дает 9X_base-r мне:
pos/S881.LMG1810.QE009562.
Как завершить выделение на первом десятичном 9X_regular-expressions знаке?
Ответ #1
Ответ на вопрос: Выберите строку, заканчивающуюся первым символом в регулярных выражениях.
Мы можем использовать поиск по регулярному 9X_regexes выражению ((?<=\\.)
), чтобы сопоставить символы, которые 9X_perl-regex идут после .
, и удалить символы с trimws
trimws(str1, whitespace = "(?<=\\.).*")
[1] "pos/S881."
Или извлеките 9X_apache-regexp символы из начала (^
) строки, которые не 9X_regexes являются .
([^.]+
), за которыми следует точка 9X_regex (метасимвол, таким образом экранированный)
library(stringr)
str_extract(str1, "^[^.]+\\.")
[1] "pos/S881."
данные
str1 <- "pos/S881.LMG1810.QE009562.mzML"
Ответ #2
Ответ на вопрос: Выберите строку, заканчивающуюся первым символом в регулярных выражениях.
В качестве альтернативы просто используйте 9X_r sub()
:
s <- 'pos/S881.LMG1810.QE009562.mzML'
sub("\\..*", ".", s)
# [1] "pos/S881."
\\..*
— Соответствует буквальной точке, за которой следует 0+ символов.
Ответ #3
Ответ на вопрос: Выберите строку, заканчивающуюся первым символом в регулярных выражениях.
Принял ответ @akrun за их быстрый ответ, но 9X_regularexpression обнаружил, что модификатор "?" делает 9X_regularexpression "*" не жадным в моем исходном 9X_regular-expression выражении, как написано.
stringr::str_extract("pos/S881.LMG1810.QE009562.mzML", "^.*?\\.")
[1] "pos/S881."
Ответ #4
Ответ на вопрос: Выберите строку, заканчивающуюся первым символом в регулярных выражениях.
Мы могли бы использовать strsplit
:
С помощью функции 9X_r-language strsplit
и индексации мы извлекаем нужную часть 9X_rstats строки:
strsplit(x, "\\.")[[1]][1]
[1] "pos/S881"
Ответ #5
Ответ на вопрос: Выберите строку, заканчивающуюся первым символом в регулярных выражениях.
Другой подход regexp
использует sub
вместе с шаблоном 9X_regularexpression "(^.*?\\.).*"
, например,
> sub("(^.*?\\.).*", "\\1", "pos/S881.LMG1810.QE009562.mzML")
[1] "pos/S881."
-
2
-
2
-
4
-
3
-
4
-
4
-
2
-
2
-
3
-
7
-
2
-
2
-
3
-
2
-
2
-
4
-
3
-
2
-
3
-
5
-
5
-
1
-
1
-
1
-
3
-
1
-
2
-
4
-
1
-
11
-
4
-
5
-
5
-
19
-
21
-
7
-
6
-
23
-
8
-
3
-
5
-
3
-
86
-
13
-
21
-
7
-
7
-
11
-
10
-
5