匹配大写和空格

时间:2015-01-07 14:25:01

标签: regex r

匹配"审计范围"但不是"审计范围"。

我知道我可以匹配大写的单个词,例如"推荐":

grepl("^[[:upper:]]+$", "RECOMMENDATION")

但我如何将某些东西与其中的空间匹配,例如"审核范围"?提前谢谢。

3 个答案:

答案 0 :(得分:3)

你可以尝试

 grepl("^[[:upper:] ]+$", x)
 #[1]  TRUE FALSE FALSE

regex101

数据

 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}允许您匹配特殊的大写字母,例如"À"