2017-08-13 119 views
0

考虑自己在正则表达式新手,我碰到一个R-脚本最终将擦去的空格从一个字符串或来(说)一条线使用gsub()。 以下是GSUB()函数用(在我看来)一个复杂的规则为:匹配:

gsub("(^ +)|(+$)", "", line) 

任何人都可以解释我是什么表情呢?彻底!

一个例子会让这么简单。

请还提供一些链接在那里我可以学到一些真正的东西约正则表达式,因为我发现没有很好的来源,当我寻找相同。

感谢您的考虑。

+0

圆括号(正则表达式中的捕获组)在这种用法中没有做任何事情;你可以使用'gsub('^ + | + $','','foo')' – alistaire

回答

3

正则表达式只是修整字符串中的空间,使用基本R函数trimws会更清晰我认为。


(^ +)|(+$)

  1. ^字符串开始位置。
  2. +(space plus)多于一个空格。
  3. $字符串结束位置。
  4. |另类。
+2

信不信由你,基础'trimws()'函数实际上比较慢。差异很小,但是hashir的正则表达式快了4-5倍。看看这里的结果:http://www.r-fiddle.org/#/fiddle?id=6QFS7LaX –

+1

@AndrewBrēza谢谢,我会编辑我的答案。看起来'trimws'是使用'sub'在内部纯R编写的,而不是我认为的C。 – aristotll

+1

该测试太小而无意义。如果您重新采样到10k左右的矢量,“trimws”大约快两倍。根据您的R版本,添加'perl = TRUE'将使它们大致相等,因为它现在得到JIT编译(主要)。 – alistaire