R 哪些正则表达式代码允许我提取此特定文本?

R 哪些正则表达式代码允许我提取此特定文本?,r,regex,stringr,R,Regex,Stringr,我正在使用R中的stringr库。我的R代码摘录如下所示: library(stringr) ... hotelname <- url %>% html_nodes(xpath = './/*[@id="hp_hotel_name"]') %>% html_text() 我只需要摘录第二部分:“海湾精品酒店(仅限成人)” 我尝试了以下方法,但无效: hotelname2 <- str_extract_all(hotelname, "

我正在使用
R
中的
stringr
库。我的R代码摘录如下所示:

library(stringr)

...

hotelname <- url %>% html_nodes(xpath = './/*[@id="hp_hotel_name"]')  %>% 
html_text()
我只需要摘录第二部分:“海湾精品酒店(仅限成人)

我尝试了以下方法,但无效:

hotelname2 <- str_extract_all(hotelname, "(?<=[A-Z]\n)([^\n]*)")

hotelname2是否提取
\n
\n
之间的文本

hotelname <- "\nHotel\nCove Boutique Hotel (Adults Only)\n"
sub('.*\n(.*)\n', '\\1', hotelname)

[1] "Cove Boutique Hotel (Adults Only)"

hotelname是否提取
\n
\n
之间的文本

hotelname <- "\nHotel\nCove Boutique Hotel (Adults Only)\n"
sub('.*\n(.*)\n', '\\1', hotelname)

[1] "Cove Boutique Hotel (Adults Only)"

hotelname修剪两端的空白,然后删除所有内容,包括\n

x <- "\nHotel\nCove Boutique Hotel (Adults Only)\n"
sub(".*\n", "", trimws(x))
## [1] "Cove Boutique Hotel (Adults Only)"
或者使用trimws,然后使用readLines:

readLines(textConnection(trimws(x)))[2]
## [1] "Cove Boutique Hotel (Adults Only)"

修剪\n末端的空白,然后删除所有内容,包括\n

x <- "\nHotel\nCove Boutique Hotel (Adults Only)\n"
sub(".*\n", "", trimws(x))
## [1] "Cove Boutique Hotel (Adults Only)"
或者使用trimws,然后使用readLines:

readLines(textConnection(trimws(x)))[2]
## [1] "Cove Boutique Hotel (Adults Only)"

如果您使用的是
stringr
,一个很好的函数是
str_squish()
,它可以删除所有空格和换行符等

hotelname2 <-  str_squish(hotelname)
hotelname2%
html\u text()%%>%str\u squish

如果您使用的是
stringr
,一个很好的函数是
str_squish()
,它可以删除所有空格和换行符等

hotelname2 <-  str_squish(hotelname)
hotelname2%
html\u text()%%>%str\u squish

或者,您可以将
stru extract
与look ahead和look behind regex一起使用,以获得所需的结果

hotelname <- "\nHotel\nCove Boutique Hotel (Adults Only)\n"

hotelname2 <- str_extract(hotelname, "(?<=Hotel\n).*(?=\n)")

hotelname或者,您可以使用
str_extract
和look ahead和look behind regex来获得所需的结果

hotelname <- "\nHotel\nCove Boutique Hotel (Adults Only)\n"

hotelname2 <- str_extract(hotelname, "(?<=Hotel\n).*(?=\n)")

hotelname此字符串是否总是介于第二个和第三个\n之间?此字符串是否总是介于第二个和第三个\n之间?