Перейти к File=>Preference=>User Settings
Вы найдете settings.json
// Configures if the built-in HTML language support suggests Angular tags and properties.
"html.suggest.angular1": false,
"html.suggest.ionic": false,
"html.suggest.html5": false,
Просто найдите свой язык и установите suggest = false
Обновить
Настройка отключения всплывающих окон
"editor.parameterHints": false
Стандарт regmatches
плохо работает с захваченными совпадениями (в частности, несколько захваченных совпадений в одной строке). И в этом случае, поскольку вы «сопоставляете» взгляд вперед (игнорируя захват), само совпадение имеет нулевую длину. Существует также функция regmatches()<-
, которая может это проиллюстрировать. Obseerve
x <- 'ACCACCACCAC'
m <- gregexpr('(?=([AC]C))', x, perl=T)
regmatches(x, m) <- "~"
x
# [1] "~A~CC~A~CC~A~CC~AC"
Обратите внимание, что все буквы сохранены, мы просто заменили места совпадений нулевой длины тем, что мы можем наблюдать.
Я создал regcapturedmatches () , которую я часто использую для таких задач. Например,
x <- 'ACCACCACCAC'
regcapturedmatches(x, gregexpr('(?=([AC]C))', x, perl=T))[[1]]
# [,1] [,2] [,3] [,4] [,5] [,6] [,7]
# [1,] "AC" "CC" "AC" "CC" "AC" "CC" "AC"
gregexpr
захватывает все данные просто отлично, поэтому вы можете извлечь его из этого объекта в любом случае, если вы предпочитаете не использовать эту вспомогательную функцию.
Решение stringi
с использованием группы захвата в стороне поиска:
> stri_match_all_regex('ACCACCACCAC', '(?=([AC]C))')[[1]][,2]
## [1] "AC" "CC" "AC" "CC" "AC" "CC" "AC"
Это не работает с stringr
, поскольку str_match_all
не поддерживает регулярные выражения PCRE.
extract_all_regex
и match_all_regex
– hwnd
26 October 2014 в 21:04
Что касается обходного пути, это то, что я придумал, чтобы извлечь совпадающие совпадения.
> x <- 'ACCACCACCAC'
> m <- gregexpr('(?=([AC]C))', x, perl=T)
> mapply(function(X) substr(x, X, X+1), m[[1]])
[1] "AC" "CC" "AC" "CC" "AC" "CC" "AC"
Не стесняйтесь добавлять или комментировать лучший способ выполнить эту задачу.
Дополнительный ответ, основанный на собственном ответе @ hwnd (оригинал не разрешил захваченные области с переменной длиной), используя только встроенные функции R:
> x <- 'ACCACCACCAC'
> m <- gregexpr('(?=([AC]C))', x, perl=T)[[1]]
> start <- attr(m,"capture.start")
> end <- attr(m,"capture.start") + attr(m,"capture.length") - 1
> sapply(seq_along(m), function(i) substr(x, start[i], end[i]))
[1] "AC" "CC" "AC" "CC" "AC" "CC" "AC"
Довольно уродливый, что почему существуют пакеты stringr
и т. д.
Это не регулярное выражение и на самом деле не отвечает на ваши более важные вопросы, но вы также можете получить желаемый результат, используя подстроки из двух символов за раз, а затем удаляя нежелательные элементы CA
.
x <- 'ACCACCACCAC'
y <- substring(x, 1:(nchar(x)-1), 2:nchar(x))
y[y != "CA"]
# [1] "AC" "CC" "AC" "CC" "AC" "CC" "AC"
Другим способом обхода одной и той же информации, которую я делал в прошлом, является замена "match.length"
на "capture.length"
:
x <- c("ACCACCACCAC","ACCACCACCAC")
m <- gregexpr('(?=([AC]C))', x, perl=TRUE)
m <- lapply(m, function(i) {
attr(i,"match.length") <- attr(i,"capture.length")
i
})
regmatches(x,m)
#[[1]]
#[1] "AC" "CC" "AC" "CC" "AC" "CC" "AC"
#
#[[2]]
#[1] "AC" "CC" "AC" "CC" "AC" "CC" "AC"
capture.start
и capture.length
.
– hwnd
12 September 2014 в 06:28
stringr
, поскольку я никогда не использовал это сам, ноregmatches
действительно фокусируется на матче, а не на захвате (который очень сильно отличается от другого). Я добавил дополнительный образец, чтобы попытаться понять, что делаетregmatches()
, по сравнению с моей функцией. ` – MrFlick 12 September 2014 в 04:50regmatches()<-
, чтобы наблюдать эффект совпадений нулевой ширины. – hwnd 12 September 2014 в 04:53