问题:我正在使用R和stringr,并且我使用“or”运算符有一个非常长的正则表达式,我将其保存到一个对象并与stringr一起使用。如何在R中将其分成多行,这样我就不必在源代码编辑器中向右滚动?当我尝试逗号时,只识别第一行。这个问题的大多数答案都是针对其他编程语言(即不是R)。
regex_of_sites <- "side|southeast|north|computer|engineer|first|south|pharm|left|southwest|level|second|thirteenth"
答案 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模式支持相同的修饰符。