Regex 匹配大写字母和空格
匹配“审计范围”,但不匹配“审计范围” 我知道我可以匹配一个大写的单词,比如“推荐”: 但我如何将某个内容与其中的某个空间相匹配,比如“审计范围”?提前谢谢Regex 匹配大写字母和空格,regex,r,Regex,R,匹配“审计范围”,但不匹配“审计范围” 我知道我可以匹配一个大写的单词,比如“推荐”: 但我如何将某个内容与其中的某个空间相匹配,比如“审计范围”?提前谢谢 grepl("^(\\s*[[:upper:]]+\\s*)*$",c("SCOPE OF AUDIT", "Scope of Audit")) #[1] TRUE FALSE akrun和我的答案在匹配“行为”方面的一个区别是,使用akrun的正则表达式将匹配一个空格字符串,而使用我的正则表达式时,需要至少有1个大写字符加上任意数量的
grepl("^(\\s*[[:upper:]]+\\s*)*$",c("SCOPE OF AUDIT", "Scope of Audit"))
#[1] TRUE FALSE
akrun和我的答案在匹配“行为”方面的一个区别是,使用akrun的正则表达式将匹配一个空格字符串,而使用我的正则表达式时,需要至少有1个大写字符加上任意数量的空格(或者没有)
从这个问题来看,OP在纯空白字符串的情况下会期望什么行为并不十分清楚,但基于他自己的正则表达式尝试(“^[[:upper:]+$”
),我假设他们希望至少匹配一个大写字符,否则他们就不会选择+
,您可以尝试
grepl("^[[:upper:] ]+$", x)
#[1] TRUE FALSE FALSE
数据
x您可以使用此正则表达式:
^[\\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}
也允许您匹配特殊的大写字母,例如,“À”
您应该更具体一点。您不想匹配任何字母较低的字符串吗?所以,只要试试!grepl(“[a-z]”,x)
。感谢您展示。(+1). 你知道\\p{Lt}
是如何工作的吗?。我尝试了grepl('\\p{Lt}',c('SCOPE','SCOPE','SCOPE'),perl=TRUE)
。它给出allFALSE
@akrun您可以找到与\\p{Lt}
匹配的所有字符。
x <- c("SCOPE OF AUDIT", "Scope of Audit", "SCOPE Of AUDit")
^[\\p{Lu}\\s]+$
grepl("^[\\p{Lu}\\s]+$",c("SCOPE OF AUDIT", "Scope of Audit"), perl = TRUE)
# [1] TRUE FALSE