删除字符串中最后一个句点后的初始句点和文本

时间:2013-07-25 08:08:37

标签: regex r

我有一个regex边缘案例,我无法解决。我需要grep从字符串中删除前导句点(如果存在)和最后一个句点后面的文本(如果存在)。

即给定一个向量:

x <- c("abc.txt", "abc.com.plist", ".abc.com")

我想得到输出:

[1] "abc"     "abc.com" "abc"

前两个案例已经解决,我在this related question获得了帮助。但不适用于带有.

的第三种情况

我确信这是微不足道的,但我没有建立联系。

1 个答案:

答案 0 :(得分:4)

这个正则表达式做你想要的:

^\.+|\.[^.]*$

用空字符串替换匹配。

在R:

gsub("^\\.+|\\.[^.]*$", "", subject, perl=TRUE);

<强>说明:

^      # Anchor the match to the start of the string
\.+    # and match one or more dots
|      # OR
\.     # Match a dot
[^.]*  # plus any characters except dots
$      # anchored to the end of the string.