标签: stringr

在R中的其他两个字符串之间提取字符串

我试图找到一种简单的方法来提取出现在两个已知子串之间的未知子串(可能是任何东西).例如,我有一个字符串:

a<-" anything goes here, STR1 GET_ME STR2, anything goes here"

我需要提取GET_MESTR1和STR2之间的字符串(没有空格).

我正在尝试str_extract(a, "STR1 (.+) STR2"),但我得到了整场比赛

[1] "STR1 GET_ME STR2"
Run Code Online (Sandbox Code Playgroud)

我当然可以删除已知的字符串,以隔离我需要的子字符串,但我认为应该有一个更清晰的方法来使用正确的正则表达式.

regex r stringr

31
推荐指数
3
解决办法
3万
查看次数

将数据框字符串列拆分为多个不同的列

我想要完成的是将列拆分为多个列.我希望第一列包含"F",第二列"US",第三列"CA6"或"DL",第四列是"Z13"或"U13"等等.我的整个df遵循相同的模式X.XX.XXXX.XXX或X.XX.XXX.XXX或X.XX.XX.XXX我知道第三列是我的问题所在,因为长度不同.我过去只使用了substr,我可以在这里使用一些if语句,但是想学习如何使用stringr包和POSIX来做到这一点(除非有更好的选择).先感谢您.

这是我的df:

c("F.US.CLE.V13", "F.US.CA6.U13", "F.US.CA6.U13", "F.US.CA6.U13", 
"F.US.CA6.U13", "F.US.CA6.U13", "F.US.CA6.U13", "F.US.CA6.U13", 
"F.US.DL.U13", "F.US.DL.U13", "F.US.DL.U13", "F.US.DL.Z13", "F.US.DL.Z13"
)
Run Code Online (Sandbox Code Playgroud)

split r dataframe stringr

27
推荐指数
3
解决办法
9万
查看次数

正则表达式多重模式与单数替换

我试图取代两个"st." 和"ste." 用"st".似乎以下应该可以工作,但它不会:

require("stringr")
county <- c("st. landry", "ste. geneveve", "st. louis")
str_replace_all(county, c("st\\.", "ste\\."), "st")
Run Code Online (Sandbox Code Playgroud)

regex r stringr

25
推荐指数
1
解决办法
3万
查看次数

非贪婪的字符串正则表达式匹配

我很确定我在这里遗漏了一些明显的东西,但是我不能让R使用非贪婪的正则表达式:

> library(stringr)
> str_match('xxx aaaab yyy', "a.*?b")                                         
     [,1]   
[1,] "aaaab"
Run Code Online (Sandbox Code Playgroud)

基本函数的行为方式相同:

> regexpr('a.*?b', 'xxx aaaab yyy')
[1] 5
attr(,"match.length")
[1] 5
attr(,"useBytes")
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

我希望这场比赛符合http://stat.ethz.ch/R-manual/R-devel/library/base/html/regex.html中的ab '贪婪'评论:

默认情况下,重复是贪婪的,因此使用最大可能的重复次数.这可以通过附加改为'minimal'吗?到量词.(还有其他量词允许近似匹配:请参阅TRE文档.)

有人可以解释一下发生了什么事吗?

更新.令人抓狂的是,在其他一些情况下,非贪婪模式的行为符合预期:

> str_match('xxx <a href="abc">link</a> yyy <h1>Header</h1>', '<a.*>')
     [,1]                                          
[1,] "<a href=\"abc\">link</a> yyy <h1>Header</h1>"
> str_match('xxx <a href="abc">link</a> yyy <h1>Header</h1>', '<a.*?>')
     [,1]              
[1,] "<a href=\"abc\">"
Run Code Online (Sandbox Code Playgroud)

regex r stringr

23
推荐指数
2
解决办法
8961
查看次数

如何逃避R中的反斜杠?

我在R工作,遇到麻烦逃避反斜杠.我正在使用图书馆stringr.

install.packages("stringr", repos='http://cran.us.r-project.org')
library("stringr")
Run Code Online (Sandbox Code Playgroud)

我想要做 str = str_replace_all(str, "\", "")

所以我试过str = str_replace_all(str, "\\", "")但它不起作用.

我该怎么办?

r backslash stringr

22
推荐指数
2
解决办法
3万
查看次数

dplyr:inner_join,部分字符串匹配

我想加入两个数据帧,如果seed在数据帧列y是对部分匹配stringx.这个例子应该说明:

# What I have
x <- data.frame(idX=1:3, string=c("Motorcycle", "TractorTrailer", "Sailboat"))
y <- data_frame(idY=letters[1:3], seed=c("ractor", "otorcy", "irplan"))


x

  idX         string
1   1     Motorcycle
2   2 TractorTrailer
3   3       Sailboat

y

Source: local data frame [3 x 2]

    idY   seed
  (chr)  (chr)
1     a ractor
2     b otorcy
3     c irplan


# What I want
want <- data.frame(idX=c(1,2), idY=c("b", "a"), string=c("Motorcycle", "TractorTrailer"), seed=c("otorcy", "ractor"))

want

  idX idY         string   seed
1   1   b     Motorcycle …
Run Code Online (Sandbox Code Playgroud)

string join r stringr dplyr

19
推荐指数
4
解决办法
7481
查看次数

通过计算特定字符来设置字符串

我有以下字符串:

strings <- c("ABBSDGNHNGA", "AABSDGDRY", "AGNAFG", "GGGDSRTYHG") 
Run Code Online (Sandbox Code Playgroud)

我想切断字符串,一旦A,G和N的出现次数达到一定值,比如说3.在这种情况下,结果应该是:

some_function(strings)

c("ABBSDGN", "AABSDG", "AGN", "GGG") 
Run Code Online (Sandbox Code Playgroud)

我试图用stringi,stringr和正则表达式的表达式,但我无法弄清楚.

regex r gsub stringr stringi

17
推荐指数
3
解决办法
491
查看次数

R:使用str_detect时如何忽略大小写?

stringr包提供了良好的字符串函数.

搜索字符串(忽略大小写)

一个人可以用

stringr::str_detect('TOYOTA subaru',ignore.case('toyota'))
Run Code Online (Sandbox Code Playgroud)

这有效,但会发出警告

请使用(fixed | coll | regex)(x,ignore_case = TRUE)而不是ignore.case(x)

重写它的正确方法是什么?

r stringr

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

正则表达式检测所有字母字符是否为大写

如何检测字符串中的所有字母字符(> = 2个字符)是否为大写?最后,我试图过滤掉章节标题名称,即我的数据集中的行.因此,如果章节标题是"ARYA",我希望检测到,与"女王的手"相同.

这是我正在尝试但不起作用的:

library(dplyr)
library(stringr)

str_detect("THE QUEEN’S HAND", "^[[:upper:]]{2,}+$")
#> FALSE
Run Code Online (Sandbox Code Playgroud)

我需要的要求:

  • 字符数> = 2因为我最终使用它来过滤掉章节名称,但有时会出现一行"I"这个词,但这不是章节 - 它只是一个单词.虽然这可以在不同的点过滤
  • 仅检测到字母字符或撇号.有时行是"...",我不想检测到.但是,如果我使用toupper(x) == (x)解决方案,这将与"女王的手"一样被检测到.我也试图摆脱任何带有感叹号或句号的东西,比如"停止这个!"

regex r stringr grepl

15
推荐指数
5
解决办法
3031
查看次数

删除两个括号之间的所有文本

假设我有这样的文字,

text<-c("[McCain]: We need tax policies that respect the wage earners and job creators. [Obama]: It's harder to save. It's harder to retire. [McCain]: The biggest problem with American healthcare system is that it costs too much. [Obama]: We will have a healthcare system, not a disease-care system. We have the chance to solve problems that we've been talking about... [Text on screen]: Senators McCain and Obama are talking about your healthcare and financial security. We need more than talk. …
Run Code Online (Sandbox Code Playgroud)

regex r stringr

14
推荐指数
2
解决办法
1万
查看次数

标签 统计

r ×10

stringr ×10

regex ×6

backslash ×1

dataframe ×1

dplyr ×1

grepl ×1

gsub ×1

join ×1

split ×1

string ×1

stringi ×1