stringr包str_extract()与正则表达式的反转

时间:2015-08-28 17:53:00

标签: regex r stringr

我有一个如下字符串: 14ed0d69fa2.bbd.7f5512.filter-132.21026.55B67C8E27.0

以下正则表达式提取以点和数字结尾的最后一部分。我想提取除了那部分之外的所有内容,并且似乎无法找到一种方法来反转正则表达式(使用^)没有帮助:

> s <- '14ed0d69fa2.bbd.7f5512.filter-132.21026.55B67C8E27.0'
> str_extract(s, '(\\.[0-9]{1})$')
[1] ".0"

我希望输出为:

[1] 14ed0d69fa2.bbd.7f5512.filter-132.21026.55B67C8E27

为了进一步澄清,我希望它按原样返回字符串,如果它不以点和一位数结尾。

以下示例:

> s <- '14ed0d69fa2.bbd.7f5512.filter-132.21026.55B67C8E27'
> str_extract(s, someRegex)
[1] "14ed0d69fa2.bbd.7f5512.filter-132.21026.55B67C8E27"
> s <- '14ed0d69fa2.bbd.7f5512.filter-132.21026.55B67C8E27.1'
> str_extract(s, someRegex)
[1] "14ed0d69fa2.bbd.7f5512.filter-132.21026.55B67C8E27"
> s <- '14ed0d69fa2.bbd.7f5512.filter-132.21026.55B67C8E27.4'
> str_extract(s, someRegex)
[1] "14ed0d69fa2.bbd.7f5512.filter-132.21026.55B67C8E27"

3 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

^.*(?=\.\d+$)|^.*

Regex live here.

答案 1 :(得分:1)

一个选择是替换最后一位,

Tkinter.TclError

答案 2 :(得分:0)

str_extract(s, ([\w ]+(?:\.|\-)){7})

然后你可以访问返回的字符串到它的lenght-1,它会给你所需的输出!

PS:您可能必须使用转义字符。