サーチ…


前書き

このドキュメントでは、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


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow