在R

时间:2017-07-24 21:47:01

标签: r regex

问题:我正在使用R和stringr,并且我使用“or”运算符有一个非常长的正则表达式,我将其保存到一个对象并与stringr一起使用。如何在R中将其分成多行,这样我就不必在源代码编辑器中向右滚动?当我尝试逗号时,只识别第一行。这个问题的大多数答案都是针对其他编程语言(即不是R)。

regex_of_sites <- "side|southeast|north|computer|engineer|first|south|pharm|left|southwest|level|second|thirteenth"

2 个答案:

答案 0 :(得分:4)

正则表达式只是一个字符串。您可以将其粘贴在多行中,就像任何其他字符串一样

regex_of_sites <- paste0("side|southeast|north|computer|engineer|",
     "first|south|pharm|left|southwest|",
     "level|second|thirteenth")

答案 1 :(得分:4)

由于您使用的模式使用了使用ICU正则表达式的stringr方法,因此您可以使用(?x)空闲间距(也称为详细或忽略模式空白)修饰符,其中编译模式时忽略所有未转义的空格,并且可以在每行上未转义#之后添加评论(因此,必须转义所有文字#)。

以下是一个例子:

> library(stringr)
> regex_of_sites <- "(?x)side     # Term 0
+ |southeast                      # Term 1
+ |north                          # Term 1
+ |computer                       # Term 2
+ |engineer
+ |first
+ |south
+ |pharm
+ |left
+ |southwest
+ |level
+ |second
+ |thirteenth"
> str_extract_all("first level", regex_of_sites)
[[1]]
[1] "first" "level"

使用perl=TRUE的基本R正则表达式函数中使用的PCRE模式支持相同的修饰符。