簡體   English   中英

如何在R中的兩個字符之間提取文本

[英]How do I extract text between two characters in R

我想在兩個字符串之間為所有出現的模式提取文本。 例如,我有這個字符串:

x<- "\nTYPE:    School\nCITY:   ATLANTA\n\n\nCITY:   LAS VEGAS\n\n" 

我想提取ATLANTALAS VEGAS這樣的詞:

[1] "ATLANTA"   "LAS VEGAS"

我嘗試使用gsub(".*CITY:\\\\s|\\n","",x) 產生的輸出是:

[1] "  LAS VEGAS"

我想輸出兩個城市(數據中的一些模式包括超過2個城市)並輸出它們而沒有前導空格。
我也嘗試過qdapRegex包,但無法接近。 我對正則表達式不太好,所以非常感謝幫助。

另外一個選項:

library(stringr)
str_extract_all(x, "(?<=CITY:\\s{3}).+(?=\\n)")
[[1]]
[1] "ATLANTA"   "LAS VEGAS"

讀作:提取任何前面帶有“City:”(和三個空格)的內容,然后是“\\ n”

你可以用

> unlist(regmatches(x, gregexpr("CITY:\\s*\\K.*", x, perl=TRUE)))
[1] "ATLANTA"   "LAS VEGAS"

在這里, CITY:\\s*\\K.*正則表達式匹配

  • CITY: - 一個文字子字符串CITY:
  • \\s* - 0+空格
  • \\K - 匹配重置運算符 ,丟棄到目前為止匹配的文本(當前匹配內存緩沖區為零)
  • .* - 除了換行符之外的任何0+字符,盡可能多。

在線查看正則表達式演示

請注意,由於它是PCRE正則表達式,因此perl=TRUE是必不可少的。

選項可以是:

regmatches(x,gregexpr("(?<=CITY:).*(?=\n\n)",x,perl = TRUE))

# [[1]]
# [1] "   ATLANTA"   "   LAS VEGAS"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM