标签: stringr

如何使用 str_match(..., regex) 匹配多个捕获组

我正在使用包str_match中的stringr内容来捕获括号之间的文本。

library(stringr)

strs = c("P5P (abcde) + P5P (fghij)", "Glcext (abcdef)")
str_match(strs, "\\(([a-z]+)\\)")
Run Code Online (Sandbox Code Playgroud)

只给我匹配"abcde""abcdef"。如何"fghij"在仍然对两个字符串使用相同的正则表达式的情况下捕获?

regex r capture string-matching stringr

1
推荐指数
1
解决办法
3075
查看次数

如何更改“ ” R 中的字符到普通空格

我使用 R 进行网页抓取,并且有一个脚本可以复制链接的文本,然后使用该字符串通过 RSelenium 跟踪链接。不幸的是,当我运行脚本时,这似乎不适用于某个特定字符串,但是当我用手动输入的字符串替换保存的字符串时,它工作正常。稍微深入研究一下页面的 html 就会发现其中一个空格字符实际上是一个字符,这就是字符串无法匹配的原因。如何在 R 中替换为普通空格?我尝试使用 stringr 库和 str_replace 命令,如下所示:

var1 <- str_replace(var1, pattern = "&nbsp;", " ")
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。我明显做错了什么吗?有没有办法让 R 显示一个字符串,其中所有奇怪的格式字符都可见?

html string r stringr

1
推荐指数
1
解决办法
4992
查看次数

str_detect 查找以字符开头并以字符结尾的单词

library(stringr)

words <- c("proposition", "proper", "poor", "paul", "park", "car")
words[str_detect(words, "^p")]
[1] "proposition" "proper" "poor" "paul" "park"
words[str_detect(words, "r$")]
[1] "proper" "poor" "car"
Run Code Online (Sandbox Code Playgroud)

我已经大大缩减了作业的数据。

我想检测以 p 开头并以 r 结尾的单词。我期待结果是正确的和糟糕的。我现在正在为一项作业花费几个小时来解决这个问题。

words[str_detect(words, "[^p][r$]")]
Run Code Online (Sandbox Code Playgroud)

无论位置如何,都会得出单词中带有 p 和 r 的任何内容。

words[str_detect(words, "^pr$")]
Run Code Online (Sandbox Code Playgroud)

这东西直接说是不行的。它不匹配任何内容,但没有抛出错误。我不明白为什么它不会抛出错误。我首先认为它与单词 ^pr$ 匹配,但这不需要转义“\”吗?

regex r stringr

1
推荐指数
1
解决办法
9138
查看次数

提取除 stringr 之外的所有内容

我有以下文件的列表

a_file.csv another_file.csv a_third_file.csv

我想编写一个函数,该函数paste仅包含之前的文本_file.csv,因此上面的字符串将是。

a another a_third

我怎样才能做到这一点stringr

stringr

1
推荐指数
1
解决办法
1647
查看次数

使用 stringr 将下划线分隔的两个单词的第一个字母大写

我有一个类似的字符串word_string。我想要的是Word_Stringstr_to_title如果我使用from 的函数stringr,我得到的是Word_string. 它不将第二个单词大写。

有谁知道有什么优雅的方式来实现这一点吗stringr?谢谢!

r stringr

1
推荐指数
1
解决办法
917
查看次数

将坐标从非常规格式的度数转换为十进制度数

我正在尝试转换我的数据,以便它可以绘制在地图上。例如,数据如下所示:

# A tibble: 2 x 2
  Latitud           Longitud        
  <chr>             <chr>           
1 10º 35' 28.98'' N 3º 41' 33.91'' O
2 10º 35' 12.63'' N 3º 45' 46.22'' O
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下方法对其进行变异:

df %>% 
  mutate(
    Latitud = str_replace_all(Latitud, "''", ""),
    lat_edit = sp::char2dms(Latitud), "°")
Run Code Online (Sandbox Code Playgroud)

返回和错误:

Error in if (any(abs(object@deg) > 90)) return("abs(degree) > 90") : 
  missing value where TRUE/FALSE needed
In addition: Warning message:
In asMethod(object) : NAs introduced by coercion
Run Code Online (Sandbox Code Playgroud)

我想在 ggplot (或其他空间包)的地图上绘制这两个点

数据:

structure(list(Latitud = c("40º 25' 25.98'' N", "40º …
Run Code Online (Sandbox Code Playgroud)

r geo dataframe stringr dplyr

1
推荐指数
1
解决办法
336
查看次数

如何让 str_replace (和其他 stringr)函数忽略正则表达式(按字面意思处理字符串)?

我们如何使 stringr 函数(例如str_replace)将参数视为字符串文字而不是正则表达式,而无需手动转义特殊字符?

例子

转义特殊字符按预期工作

"dsfj?lddkfj" %>% str_replace("\\?ld", "AAA")
[1] "dsfjAAAdkfj"
Run Code Online (Sandbox Code Playgroud)

但如果我们不转义特殊字符,stringr函数会将 视为pattern正则表达式。在这种情况下我们会得到一个错误。

"dsfj?lddkfj" %>% str_replace("?ld", "AAA")
Run Code Online (Sandbox Code Playgroud)

问题

是否有一些标准方法可以强制 stringr 函数将模式视为字符串文字(无需手动转义特殊字符)?

笔记

我可以看到perl = T用于该功能的选项sub()

r stringr tidyverse

1
推荐指数
1
解决办法
956
查看次数

stringr str_replace 多个模式和替换?

我试过

> str_replace("abcdef", c("b", "d"), c(b="B", d="D"))
[1] "aBcdef" "abcDef"
Run Code Online (Sandbox Code Playgroud)

希望

[1] "aBcDef"
Run Code Online (Sandbox Code Playgroud)

我们如何用一个特定的替换来替换每个模式,并调用一个函数stringr::str_replace

r stringr

1
推荐指数
4
解决办法
2764
查看次数

如何匹配/删除 R 中注释开头的数字

我有一个导入 R 的评论列表。以下是一些评论如何导入的示例 -

9. This is some string number 1
9This is some string number 2
9 This is some string number 3
9-This is some string number 4
67-68 This is some string number 5
Run Code Online (Sandbox Code Playgroud)

注意我将评论保存到一个名为 some_str

我的目标是在行首打印出没有数字的每一行。像这样 -

This is some string number 1
This is some string number 2
This is some string number 3
This is some string number 4
This is some string number 5
Run Code Online (Sandbox Code Playgroud)

我使用下面的代码来处理9. This is some string number 1上面的第一行 …

regex r stringr

1
推荐指数
1
解决办法
104
查看次数

如何将 R 中的 stringr::str_detect 中的匹配项提取到列表向量中

我正在尝试对文本数据库执行以下搜索。

这是示例数据库,df

df <- data.frame(

  id = c(1, 2, 3, 4, 5, 6), 
  name = c("john doe", "carol jones", "jimmy smith", 
           "jenny ruiz", "joey jones", "tim brown"), 
  place = c("reno nevada", "poland maine", "warsaw poland", 
           "trenton new jersey", "brooklyn new york", "atlanta georgia")

  )
Run Code Online (Sandbox Code Playgroud)

我有一个字符串向量,其中包含我要查找的术语。

new_search <- c("poland", "jones")
Run Code Online (Sandbox Code Playgroud)

我将向量传递给 str_detect 以在 df 的任何列中查找 new_search 中的任何字符串,然后返回匹配的行...

df %>% 
    filter_all(any_vars(str_detect(., paste(new_search, collapse = "|")))) 
Run Code Online (Sandbox Code Playgroud)

问题...如何将 str_detect 的结果提取到新列中?
对于返回的每一行......我想生成一个成功匹配的术语列表并将它们放入列表或字符向量(matched_terms)......像这样......

  id        name             place    matched_terms   
1  2 carol jones      poland maine   c("jones", "poland")
2 …
Run Code Online (Sandbox Code Playgroud)

r stringr dplyr tidyverse

1
推荐指数
1
解决办法
85
查看次数

标签 统计

stringr ×10

r ×9

regex ×3

dplyr ×2

tidyverse ×2

capture ×1

dataframe ×1

geo ×1

html ×1

string ×1

string-matching ×1