相关疑难解决方法(0)

为什么有这么多不同的正则表达式方言?

我想知道为什么必须有这么多正则表达方言.为什么它看起来像这么多语言,而不是重复使用一种经过验证的方言,似乎一心想写自己的语言.

像这些.

我的意思是,我知道其中一些确实有非常不同的后端.但是不应该从程序员那里抽象出来吗?

我更多地指的是奇怪但小的差异,比如括号必须用一种语言转义,但是在另一种语言中是文字.或者元字符意味着有些不同的东西.

是否有任何特殊原因我们不能为正则表达式提供某种普遍方言?我认为这对于那些必须使用多种语言的程序员来说会更容易.

regex

15
推荐指数
1
解决办法
1647
查看次数

R中的REGEX:从字符串中提取单词

我想这是一个常见的问题,我发现了很多网页,包括一些来自SO,但我不明白如何实现它.

我是REGEX的新手,我想在R中使用它来从句子中提取前几个单词.

例如,如果我的判决是

z = "I love stack overflow it is such a cool site"
Run Code Online (Sandbox Code Playgroud)

我喜欢把我的输出作为(如果我需要前四个单词)

[1] "I love stack overflow"
Run Code Online (Sandbox Code Playgroud)

或者(如果我需要最后四个字)

[1] "such a cool site"
Run Code Online (Sandbox Code Playgroud)

当然,以下作品

paste(strsplit(z," ")[[1]][1:4],collapse=" ")
paste(strsplit(z," ")[[1]][7:10],collapse=" ")
Run Code Online (Sandbox Code Playgroud)

但我想尝试一个性能问题的正则表达式解决方案,因为我需要处理非常大的文件(也为了解它)

我看了几个链接,包括 Regex从字符串中提取前3个单词http://osherove.com/blog/2005/1/7/using-regex-to-return-the-first-n-words-in -a-string.html

所以我尝试了类似的东西

gsub("^((?:\S+\s+){2}\S+).*",z,perl=TRUE)
Error: '\S' is an unrecognized escape in character string starting ""^((?:\S"
Run Code Online (Sandbox Code Playgroud)

我尝试了其他的东西,但它通常返回我整个字符串,或空字符串.

substr的另一个问题是它返回一个列表.也许看起来[[]]操作员在处理大文件和应用东西时会慢一点(??).

看起来R中使用的语法有些不同?谢谢 !

regex string r extract

6
推荐指数
1
解决办法
8149
查看次数

标签 统计

regex ×2

extract ×1

r ×1

string ×1