本文介绍了R中的动态正则表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

只要 beforeafter 字符串没有正则表达式所特有的字符,下面的代码就可以工作:

The below code works so long as before and after strings have no characters that are special to a regex:

before <- 'Name of your Manager (note "self" if you are the Manager)' #parentheses cause problem in regex
after  <- 'CURRENT FOCUS'

pattern <- paste0(c('(?<=', before, ').*?(?=', after, ')'), collapse='')
ex <- regmatches(x, gregexpr(pattern, x, perl=TRUE))

R 是否具有转义字符串以用于正则表达式的函数?

Does R have a function to escape strings to be used in regexes?

推荐答案

使用 \Q...\E 来包围逐字的子模式:

Use \Q...\E to surround the verbatim subpatterns:

# test data
before <- "A."
after <- ".Z"
x <- c("A.xyz.Z", "ABxyzYZ")

pattern <- sprintf('(?<=\\Q%s\\E).*?(?=\\Q%s\\E)', before, after)

给出:

> gregexpr(pattern, x, perl = TRUE) > 0
[1]  TRUE FALSE

这篇关于R中的动态正则表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-12 19:17