R包含句点的字符串的正则表达式

时间:2014-09-12 10:51:33

标签: regex r

我有一堆字符串,其中一些字符串以..t.结尾。我试图找到一个匹配这些字符串的正则表达式,但处理完全停止让我头疼!

我试过了

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

但这也匹配w...gate等字符串。我想我正在处理错误的句号。任何帮助都赞赏。

注意:我在R中使用grep。

3 个答案:

答案 0 :(得分:8)

由于您只是检查字符串的结尾是否以..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}来匹配两个点而不是两次转义\\.\\.

答案 1 :(得分:2)

k,一点点更好的谷歌搜索提供了答案;

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

这是有效的,因为我们需要在R中将\\.转义为<。<}。

答案 2 :(得分:0)

点(.)只匹配单个字符..删除dot的含义你应该在dot char(\\)之前使用双斜杠。

试试这个......

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

Satheesh Appu