Как извлечь только группу захвата в регулярном выражении в R - PullRequest
1 голос
/ 05 июня 2019

Я пытаюсь извлечь шаблон из некоторого HTML.Я использую stringr.

У меня есть список чисел, например nums<-c(">00324R<",">E223143<",">00000F<") Я пробовал str_extract(nums,">[A-Z0-9]{4,}?<"), который извлекает нужный мне шаблон (">00324R<" ">E223143<" ">00000F<"), но я не хочу извлекать <или>

Я знаю, что положительный взгляд может быть ответом здесь, но я не могу создать тот, который работает, и я не уверен, почему нет.Я пробовал:

str_extract(nums,"(?<=<)[A-Z0-9]{4,}?<")

Ответы [ 2 ]

2 голосов
/ 05 июня 2019

Используйте следующее регулярное выражение

> str_extract(nums,"(?<=>)[A-Z0-9]{4,}(?=<)")
[1] "00324R"  "E223143" "00000F" 

Подробно

  • (?<=>) - положительный вид сзади, который соответствует местоположению, которому непосредственно предшествует >
  • [A-Z0-9]{4,} - четыре или более заглавных букв или цифр ASCII
  • (?=<) - положительный прогноз, который совпадает с местоположением, за которым сразу следует <.

См. Демонстрационную версию regex и график регулярных выражений:

enter image description here

1 голос
/ 05 июня 2019

Если ваши строки настолько непротиворечивы, вы можете просто выбрать что-то, что не > или <:

str_extract(nums, "[^<>]+")
# [1] "00324R"  "E223143" "00000F"

Или gsub() их прочь:

gsub("[<|>]", "", nums)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...