在某些情况下,我使用正则表达式队列来过滤观察者模式中的特定项目。过滤器将根据值将这些值放置在特定控件中。但是,控件模式之一是它可以接受任何ASCII字符。让我用RegEx按顺序列出过滤器
Column Rule Regex
Receiving 7 DIGITS @"^[1-9]([0-9]{6}$)" --->Works
Count 2 digits, no leading 0 @"^[1-9]([0-9]{0,1})$" --->Works
Producer any ASCII char. @".*" --->too broad
MUST contain a letter
是否存在可以接受任何ASCII字符集的正则表达式,但是其中1个必须为字母(大写或小写)? @“ ^(?=。* [A-Za-z])$”->无效
需要表达的示例
红色
答案 0 :(得分:2)
如果要匹配整个ASCII字符范围,可以使用
@"^(?=[^A-Za-z]*[A-Za-z])[\x00-\x7F]*$"
如果仅允许使用可打印的字符
@"^(?=[^A-Za-z]*[A-Za-z])[ -~]*$"
请注意,(?=[^A-Za-z]*[A-Za-z])
正向查找位于^
之后,也就是说,它仅在字符串的开头触发。除ASCII字母外,它需要在0个或多个字符后的ASCII字母。
您的^(?=.*[A-Za-z])$
模式不起作用,因为您想匹配一个空字符串(^$
),该字符串包含(?=...)
,该字符串在任意0后面至少包含一个ASCII字母([A-Za-z]
) +除换行符(.*
)以外的其他字符。
答案 1 :(得分:0)
怎么样
test <- data.frame(name= c("A", "B", "C", "D", "E"), v1 = c(2, 4, 1, 1, 2),
v2 = c(3, 4, 2, 1, 5), stringsAsFactors = FALSE)
吗?
在行首和结尾之间,接受任意数量的任何字符,然后接受至少一个a-z / A-Z字符,然后再次接受任意数量的任何字符。
答案 2 :(得分:0)
您可以尝试[A-Za-z]+
。
至少有一个字母时匹配。您想要更具体的内容吗?