R Language
Синтаксис регулярного выражения в R
Поиск…
Вступление
В этом документе представлены основы регулярных выражений, используемых в R. Для получения дополнительной информации о синтаксисе регулярных выражений R см. « ?regex
. Полный список операторов регулярного выражения см. В этом руководстве ICU для регулярных выражений .
Используйте `grep`, чтобы найти строку в символьном векторе
# General syntax:
# grep(<pattern>, <character vector>)
mystring <- c('The number 5',
'The number 8',
'1 is the loneliest number',
'Company, 3 is',
'Git SSH tag is [email protected]',
'My personal site is www.personal.org',
'path/to/my/file')
grep('5', mystring)
# [1] 1
grep('@', mystring)
# [1] 5
grep('number', mystring)
# [1] 1 2 3
x|y
означает поиск «x» или «y»,
grep('5|8', mystring)
# [1] 1 2
grep('com|org', mystring)
# [1] 5 6
.
является специальным символом в Regex. Это означает «соответствовать любому персонажу»,
grep('The number .', mystring)
# [1] 1 2
Будьте осторожны при попытке сопоставить точки!
tricky <- c('www.personal.org', 'My friend is a cyborg')
grep('.org', tricky)
# [1] 1 2
Чтобы соответствовать буквальному символу, вам нужно избежать строки с обратным слэшем ( \
). Тем не менее, R пытается найти escape-символы при создании строк, поэтому вам действительно нужно избежать самой обратной косой черты (т. Е. Вам нужно удвоить символы регулярного выражения escape- символов).
grep('\.org', tricky)
# Error: '\.' is an unrecognized escape in character string starting "'\."
grep('\\.org', tricky)
# [1] 1
Если вы хотите совместить один из нескольких символов, вы можете обернуть эти символы в скобки ( []
)
grep('[13]', mystring)
# [1] 3 4
grep('[@/]', mystring)
# [1] 5 7
Может быть полезно указать последовательности символов. Например, [0-4]
будет соответствовать 0, 1, 2, 3 или 4, [AZ]
будет соответствовать любой заглавной букве, [Az]
будет соответствовать любой прописной или строчной букве, а [A-z0-9]
будет соответствовать любому буква или номер (т.е. все буквенно-цифровые символы)
grep('[0-4]', mystring)
# [1] 3 4
grep('[A-Z]', mystring)
# [1] 1 2 4 5 6
R также имеет несколько классов ярлыков, которые могут использоваться в скобках. Например, [:lower:]
является коротким для az
, [:upper:]
является сокращением для AZ
, [:alpha:]
- Az
, [:digit:]
- 0-9
, а [:alnum:]
- A-z0-9
. Обратите внимание, что все эти выражения должны использоваться внутри скобок; например, чтобы соответствовать одной цифре, вы можете использовать [[:digit:]]
(обратите внимание на двойные скобки). В качестве другого примера, [@[:digit:]/]
будет соответствовать символам @
, /
или 0-9
.
grep('[[:digit:]]', mystring)
# [1] 1 2 3 4
grep('[@[:digit:]/]', mystring)
# [1] 1 2 3 4 5 7
Кронштейны также могут использоваться, чтобы отрицать совпадение с каратом ( ^
). Например, [^5]
будет соответствовать любому символу, отличному от «5».
grep('The number [^5]', mystring)
# [1] 2