Szukaj…


Wprowadzenie

Ten dokument przedstawia podstawy wyrażeń regularnych używanych w R. Aby uzyskać więcej informacji na temat składni wyrażeń regularnych R, zobacz ?regex . Pełna lista operatorów wyrażeń regularnych znajduje się w tym przewodniku ICU na temat wyrażeń regularnych .

Użyj `grep`, aby znaleźć ciąg znaków w wektorze znaków

# 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 oznacza szukanie „x” lub „y”

grep('5|8', mystring)
# [1] 1 2
grep('com|org', mystring)
# [1] 5 6

. jest postacią specjalną w Regex. Oznacza „dopasuj dowolny znak”

grep('The number .', mystring)
# [1] 1 2

Zachowaj ostrożność, próbując dopasować kropki!

tricky <- c('www.personal.org', 'My friend is a cyborg')
grep('.org', tricky)
# [1] 1 2

Aby dopasować dosłowny znak, musisz uciec z łańcucha odwrotnym ukośnikiem ( \ ). Jednak R próbuje wyszukać znaki specjalne podczas tworzenia ciągów, więc faktycznie musisz uciec z samego odwrotnego ukośnika (tj. Musisz podwójnie uciec ze znaków wyrażenia regularnego).

grep('\.org', tricky)
# Error: '\.' is an unrecognized escape in character string starting "'\."
grep('\\.org', tricky)
# [1] 1

Jeśli chcesz dopasować jeden z kilku znaków, możesz zawinąć je w nawiasy ( [] )

grep('[13]', mystring)
# [1] 3 4
grep('[@/]', mystring)
# [1] 5 7

Przydatne może być wskazanie sekwencji znaków. Np. [0-4] pasuje do 0, 1, 2, 3 lub 4, [AZ] pasuje do dowolnej wielkiej litery, [Az] pasuje do dowolnej wielkiej lub małej litery, a [A-z0-9] pasuje do dowolnej litera lub cyfra (tzn. wszystkie znaki alfanumeryczne)

grep('[0-4]', mystring)
# [1] 3 4
grep('[A-Z]', mystring)
# [1] 1 2 4 5 6

R ma także kilka klas skrótów, których można używać w nawiasach. Na przykład [:lower:] to skrót od az , [:upper:] to skrót od AZ , [:alpha:] to Az , [:digit:] to 0-9 , a [:alnum:] to A-z0-9 . Zauważ, że te całe wyrażenia muszą być użyte w nawiasach; na przykład, aby dopasować jedną cyfrę, możesz użyć [[:digit:]] (zwróć uwagę na podwójne nawiasy kwadratowe). W innym przykładzie [@[:digit:]/] dopasuje znaki @ , / lub 0-9 .

grep('[[:digit:]]', mystring)
# [1] 1 2 3 4
grep('[@[:digit:]/]', mystring)
# [1] 1 2 3 4 5 7

Wsporników można również użyć do zanegowania dopasowania za pomocą karata ( ^ ). Na przykład [^5] pasuje do dowolnego znaku innego niż „5”.

grep('The number [^5]', mystring)
# [1] 2


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow