Обнаружение строки с регулярным выражением - PullRequest
0 голосов
/ 04 декабря 2018

Скажем, у меня есть строка, такая как "J1P3V9".У меня также есть строки, такие как "0H44J4".Я хочу обнаружить только те строки, которые следуют за первым шаблоном буквы, числа, буквы, числа, буквы, номера.

Что такое выражение регулярного выражения для соответствия только этим экземплярам?

Ответы [ 4 ]

0 голосов
/ 04 декабря 2018

Вы можете использовать

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

См. демонстрацию на regex101.com .


Или, более подробный, но не поддерживаемый в R:
(?(DEFINE)
    (?<letter>[a-zA-Z])
    (?<number>\d)
)
\b(?:(?&letter)(?&number)){3}\b


Шутки в сторону, не полагайтесь на \w, который является сокращением для [a-zA-z0-9_] и скорее всего будетсоответствовать больше, чем вы хотите.
0 голосов
/ 04 декабря 2018

Вы можете использовать это регулярное выражение:

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

Использование:

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

grepl("(?:[A-Z]\\d){3}", mystring) 
# [1]  TRUE FALSE
0 голосов
/ 04 декабря 2018

Это регулярное выражение выполняет вашу работу,

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

\b обеспечивает частичное совпадение в большей строке.

Демо

Если вы тоже хотите включить строчные буквы, регулярное выражение становится,

\b([a-zA-Z]\d){3}\b
0 голосов
/ 04 декабря 2018

Попробуйте следующее регулярное выражение.

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

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

grep(pattern, s, value = TRUE)
#[1] "J1P3V9"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...