R:条件grep字符串的所有匹配项

R:条件grep字符串的所有匹配项,r,regex,string,R,Regex,String,我正试图根据两个条件解析字符串: 必须在字符的两侧各有一个字符/ 必须能够分析同一单元格中的所有事件 下面是我试图完成这项任务的尝试。除此之外,我无法解析“苹果B/E绿色T/A欧芹”。我想知道我如何才能grep一个细胞,无论它发生在哪里 提前谢谢 col.df <- c("N/A", "Apples and Oranges", "H/E Carrots", "Apples B/ E Greens T/A Parsley", "B/E Greens T/A Parsley", "WATE

我正试图根据两个条件解析字符串:

  • 必须在字符的两侧各有一个字符/
  • 必须能够分析同一单元格中的所有事件
下面是我试图完成这项任务的尝试。除此之外,我无法解析“苹果B/E绿色T/A欧芹”。我想知道我如何才能grep一个细胞,无论它发生在哪里

提前谢谢

col.df <- c("N/A", "Apples and Oranges", "H/E Carrots", "Apples B/ E Greens T/A Parsley", "B/E Greens T/A Parsley", "WATER/SODA")

slash.title = "(^[A-Z]{1}/)"
sort(unique(col.df[grep(slash.title, col.df)]))

[1] "B/E Greens T/A Parsley" "H/E Carrots"            "N/A"                   
col.df这个怎么样

sort(unique(grep("\\b[A-Z]/[A-Z]\\b", col.df, value=T)))
这里我使用了表示工作边界的
\b
。因此,每个字母前后必须有空格或字符串的结尾

它回来了

[1] "Apples B/ E Greens T/A Parsley" "B/E Greens T/A Parsley"  "H/E Carrots"                   
[4] "N/A"  
这个怎么样

sort(unique(grep("\\b[A-Z]/[A-Z]\\b", col.df, value=T)))
这里我使用了表示工作边界的
\b
。因此,每个字母前后必须有空格或字符串的结尾

它回来了

[1] "Apples B/ E Greens T/A Parsley" "B/E Greens T/A Parsley"  "H/E Carrots"                   
[4] "N/A"  
这个怎么样

sort(unique(grep("\\b[A-Z]/[A-Z]\\b", col.df, value=T)))
这里我使用了表示工作边界的
\b
。因此,每个字母前后必须有空格或字符串的结尾

它回来了

[1] "Apples B/ E Greens T/A Parsley" "B/E Greens T/A Parsley"  "H/E Carrots"                   
[4] "N/A"  
这个怎么样

sort(unique(grep("\\b[A-Z]/[A-Z]\\b", col.df, value=T)))
这里我使用了表示工作边界的
\b
。因此,每个字母前后必须有空格或字符串的结尾

它回来了

[1] "Apples B/ E Greens T/A Parsley" "B/E Greens T/A Parsley"  "H/E Carrots"                   
[4] "N/A"  

只要把
{1}
放在每个
[A-Z]
@l'l'l后面为什么
{1}
是必要的或有用的
grep(“[A-Z]{1}\\\\/[A-Z]{1}”,“AA/BB”,value=T)
返回“AA/BB”,据我所知,它不是匹配项。@MrFlick,它应该只返回A/B,其中包含用作量词的{n}的确切数字;这样对你不管用。顺便说一句-使用
\b
边界!你上面的例子没有显示。@l'l'l但是
grep(\\b[A-Z]\\/[A-Z]\\b),col.df,value=t)
grep(\\b[A-Z]{1}\\\/[A-Z]{1}\\b,col.df,value=t)完全相同。
我不明白添加
{1}
有什么意义。我编写的字符类只会匹配一个字符。不,它在使用正则表达式时的行为,
[A-Z]
A
的字符匹配到
Z
,方法是添加
{1}
它匹配的是同一个东西。只需在每个
[A-Z]
@l'l>后面加上
{1}
,为什么
{1} 
必要还是有用?
grep(“[A-Z]{1}\\\\/[A-Z]{1}”,“AA/BB”,value=T)返回“AA/BB”,据我所知,它不是匹配项。@MrFlick,它应该只返回A/B和{n}的确切数字用作量词;它对你不起作用?.btw-使用
\b
boundry!你上面的例子没有显示出来。@l'l但是
grep(\\b[A-Z]\\/[A-Z]\\b),col.df,value=t)
grep(\\b[A-Z]{1}\\\\\/[A-Z]{1}\\b],col df,value=t)完全相同。
我不明白添加
{1}
。我编写的字符类将只匹配一个字符。不,它在使用正则表达式时的行为,
[A-Z]
A
的字符匹配到
Z
,方法是添加
{1}
它匹配相同的东西。只需在每个
[A-Z]之后放置
{1}
@l'l'l为什么
{1}
是必要的或有用的?
grep(“[A-Z]{1}\\\/[A-Z]{1}”,“AA/BB”,value=T)
返回“AA/BB”,据我所知,这不是一个匹配项。@MrFlick,它应该只返回A/B和{n}的确切数字用作量词;它对你不起作用?.btw-使用
\b
boundry!你上面的例子没有显示出来。@l'l但是
grep(\\b[A-Z]\\/[A-Z]\\b),col.df,value=t)
grep(\\b[A-Z]{1}\\\\\/[A-Z]{1}\\b],col df,value=t)完全相同。
我不明白添加
{1}
。我编写的字符类将只匹配一个字符。不,它在使用正则表达式时的行为,
[A-Z]
A
的字符匹配到
Z
,方法是添加
{1}
它匹配相同的东西。只需在每个
[A-Z]之后放置
{1}
@l'l'l为什么
{1}
是必要的或有用的?
grep(“[A-Z]{1}\\\/[A-Z]{1}”,“AA/BB”,value=T)
返回“AA/BB”,据我所知,这不是一个匹配项。@MrFlick,它应该只返回A/B和{n}的确切数字用作量词;它对你不起作用?.btw-使用
\b
boundry!你上面的例子没有显示出来。@l'l但是
grep(\\b[A-Z]\\/[A-Z]\\b),col.df,value=t)
grep(\\b[A-Z]{1}\\\\\/[A-Z]{1}\\b],col df,value=t)完全相同。
我不明白添加
{1}
。我编写的字符类将只匹配一个字符。不,它在使用正则表达式时的行为,
[A-Z]
将通过添加
{1}
来匹配
A
Z
,它匹配的是相同的东西。