正则表达式字符串检测

时间:2018-12-04 17:53:31

标签: r regex string

说我有一个字符串,例如“ J1P3V9”。我也有诸如“ 0H44J4”之类的字符串。我只想检测遵循字母,数字,字母,数字,字母,数字的第一个模式的字符串。

什么是仅与这些实例匹配的正则表达式?

4 个答案:

答案 0 :(得分:1)

此正则表达式可以完成您的工作,

\b([A-Z]\d){3}\b

\b确保在较大的字符串中部分不匹配。

Demo

如果您还想包含小写字母,则正则表达式将变为

\b([a-zA-Z]\d){3}\b

答案 1 :(得分:0)

尝试以下正则表达式。

s <- c("J1P3V9", "0H44J4")

pattern <- paste(rep("[[:alpha:]][[:digit:]]", 3), collapse = "")

grep(pattern, s, value = TRUE)
#[1] "J1P3V9"

答案 2 :(得分:0)

您可以使用此正则表达式:

(?:[A-Z]\\d){3}

用法:

mystring <- c("J1P3V9", "0H44J4")

grepl("(?:[A-Z]\\d){3}", mystring) 
# [1]  TRUE FALSE

答案 3 :(得分:0)

您可以使用

\b(?:[a-zA-Z]\d){3}\b

请参见a demo on regex101.com


或者,更详细但在R中不受支持:

(?(DEFINE)
    (?<letter>[a-zA-Z])
    (?<number>\d)
)
\b(?:(?&letter)(?&number)){3}\b


除了笑话,不要依赖\w,它是[a-zA-z0-9_]的捷径,很可能会比您想要的匹配更多。