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
.
正規表現の特殊文字です。これは、 "任意の文字に一致"
grep('The number .', mystring)
# [1] 1 2
ドットをマッチさせるときは注意してください!
tricky <- c('www.personal.org', 'My friend is a cyborg')
grep('.org', tricky)
# [1] 1 2
リテラル文字を照合するには、文字列をバックスラッシュ( \
)でエスケープする必要があります。しかし、Rは文字列を作成する際にエスケープ文字を探しているので、実際にはバックスラッシュ自体をエスケープする必要があります(正規表現文字を二重にエスケープする必要があります)。
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
。これらの完全な式は角カッコ内で使用する必要があります。たとえば、1桁の数字と一致させるには、 [[: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