R包含满档的字符串的正则表达式

问题描述:

我有一串字符串,其中一些字符串以..t.结尾。我试图找到一个正则表达式来匹配这些字符串,但处理完整的停顿令我头疼!R包含满档的字符串的正则表达式

我已经试过

grep('^.+(..t.)$', myStrings) 

但这也匹配的字符串,如w...gate。我想我正在处理错误的全程。任何帮助都很感激。

注:我使用的内R. grep的

K,更好的谷歌搜索一点点给出了答案;

grep("^.+(\\.\\.t\\.)$", myStrings) 

这工作,因为我们需要躲避点作为\\.在R.

+0

我知道的 - 在1分钟内回答显示研究差。我想我只是碰到了一个更好的谷歌搜索术语 - 真的不想尝试垃圾邮件。 – Joe 2014-09-12 10:56:49

+1

假设你有一个字符串'str1 akrun 2014-09-12 11:00:19

+0

是的,这是打算 - 他的字符串必须以'..t.'结尾。在此之前的任何内容都是有效的 – Joe 2014-09-12 11:01:34

的点(.)只有一个字符匹配..去除斑点的意义ü点字符前,应使用双斜杠(\\)。

试试这个,而不是.....

grep('^.+(\\.\\.t\\.)$', myStrings) 

Satheesh APPU

+0

您的答案无效。你必须经常逃避''''R – 2014-09-12 11:22:01

+0

是的大卫,你是对的。必须逃脱\像这样grep('^ \\。+(\\。\\。t \\。)$',myStrings) – 2014-09-12 11:34:13

既然你如果字符串的结尾与..t.结束只检查,可以消除你的模式^.+

正则表达式语法中的点.是一个character of special meaning,它匹配除了换行符序列以外的任何字符。要匹配一个字面点或任何其他特殊含义的字符,你需要跳过\\它。

> x <- c('foo..t.', 'w...gate', 'bar..t.foo', 'bar..t.') 
> grep('\\.{2}t\\.$', x) 
# [1] 1 4 

或者将该字符放在character class的内部。

> x <- c('foo..t.', 'w...gate', 'bar..t.foo', 'bar..t.') 
> grep('[.]{2}t[.]$', x) 
# [1] 1 4 

注:我使用的范围操作\\.{2}匹配两个点,而不是逃避它两次\\.\\.

+0

这绝对会更好!谢谢。将等待一天,如果没有更好的解决方案(我怀疑它)会接受答案。 – Joe 2014-09-12 14:22:26

+0

已经过了一两天了...... – RyanfaeScotland 2016-09-02 14:18:16