包含拉丁符号和西里尔符号的正则表达式

Regex containing both latin and cyrillic symbols

我有从 html_text()

得到的字符串

feel sore — болеть feel sore about — страдать; мучиться

但应该是这样的

feel sore — болеть
feelsore about — страдать; мучиться

问题是,rvest 不区分空格和换行符,但我只需要得到第一行“feel sore — болеть”。

我尝试使用 stringr::str_extract() 但失败了。我该怎么办?

UPD:好的,我发现有 html_text2() 但是否仍然可以使用正则表达式?

你可以使用两个否定字符类:

  • [^—]+:匹配任何不是一次或多次
  • 的字符
  • [^A-Za-z]+:匹配任何不是一次或多次英文字母大写或小写字母的字符:

数据:

str <- c("feel sore — болеть feel sore about — страдать; мучиться", 
         "so long — разг. Пока!")

解决方案:

str_extract_all(str, "[^—]+—[^A-Za-z]+")
[[1]]
[1] "feel sore — болеть "                  "feel sore about — страдать; мучиться"

[[2]]
[1] "so long — разг. Пока!"

要去掉列表字符,使用unlist;要摆脱尾随空格,请使用 trimws.