匹配"审计范围"但不是"审计范围"。
我知道我可以匹配大写的单个词,例如"推荐":
grepl("^[[:upper:]]+$", "RECOMMENDATION")
但我如何将某些东西与其中的空间匹配,例如"审核范围"?提前谢谢。
答案 0 :(得分:3)
你可以尝试
grepl("^[[:upper:] ]+$", x)
#[1] TRUE FALSE FALSE
x <- c("SCOPE OF AUDIT", "Scope of Audit", "SCOPE Of AUDit")
答案 1 :(得分:2)
grepl("^(\\s*[[:upper:]]+\\s*)*$",c("SCOPE OF AUDIT", "Scope of Audit"))
#[1] TRUE FALSE
匹配&#34;行为的一个区别&#34;在akrun和我之间的答案是,使用akrun的正则表达式会匹配一串白色空格,而对于我的,需要至少有1个大写字符加上任意数字白色空间(或没有)。
grepl("^[[:upper:] ]+$", " ") # answer by akrun
#[1] TRUE
grepl("^(\\s*[[:upper:]]+\\s*)*$", " ") # my answer
#[1] FALSE
从一个问题不太明确的问题OP在一个只有空格的字符串的情况下会有什么样的行为,但基于他自己的正则表达式尝试("^[[:upper:]]+$"
)我假设他们想要匹配至少1个大写字母,否则他们就不会选择+
。
答案 2 :(得分:2)
您可以使用此正则表达式:
^[\\p{Lu}\\s]+$
下面。 \\p{Lu}
匹配大写字母(Unicode),\\s
匹配空格。
一个例子:
grepl("^[\\p{Lu}\\s]+$",c("SCOPE OF AUDIT", "Scope of Audit"), perl = TRUE)
# [1] TRUE FALSE
正则表达式\\p{Lu}
允许您匹配特殊的大写字母,例如"À"
。