Regular Expression R

Asked

Viewed 326 times

5

I have a variable that indicates the year of Elementary School that a student is attending, but this variable was not fulfilled in a single way.

For example the 1st Year of Elementary School because it is indicated as 1º ano, 1º Ano, 1º ANO, 1 º ano. Can anyone indicate how I can include all possible forms within one grep for example. I know I can do some grep, only that for this I would need to know exactly each shape that was filled and would be more useful something automatic.

Follows a dput of part of the information.

c("1º ano", "1º ano", "1º ano", "1º ano", "2º ano", "2º ano", 
"2º ano", "2º ano", "3º ano", "3º ano", "3º ano", "3º ano", "4º ano", 
"4º ano", "4º ano", "4º ano", "5º ano", "5º ano", "5º ano", "5º ano", 
"1º ano", "1º ano", "1º ano", "1º ano", "2º ano", "2º ano", "2º ano", 
"2º ano", "3º ano", "3º ano", "3º ano", "3º ano", "4º ano", "4º ano", 
"4º ano", "4º ano", "5º ano", "5º ano", "5º ano", "5º ano", "1º ano", 
"1º ano", "1º ano", "1º ano", "2º ano", "2º ano", "2º ano", "2º ano", 
"3º ano", "3º ano", "3º ano", "3º ano", "4º ano", "4º ano", "4º ano", 
"4º ano", "5 º ano", "5 º ano", "5 º ano", "5 º ano", "1º ano", 
"1º ano", "1º ano", "1º ano", "1º ano", "2º ano", "2º ano", "2º ano", 
"2º ano", "2º ano", "3º ano", "3º ano", "3º ano", "3º ano", "3º ano", 
"4º ano", "4º ano", "4º ano", "4º ano", "4º ano", "5º ano", "5º ano", 
"5º ano", "5º ano", "5º ano", "Anos iniciais 1º ano / Parcial", 
"Anos iniciais 1º ano / Parcial", "Anos iniciais 1º ano / Parcial", 
"Anos iniciais 1º ano / Parcial", "Anos iniciais 2º ano / Parcial", 
"Anos iniciais 2º ano / Parcial", "Anos iniciais 2º ano / Parcial", 
"Anos iniciais 2º ano / Parcial", "Anos iniciais 3º ano / Parcial", 
"Anos iniciais 3º ano / Parcial", "Anos iniciais 3º ano / Parcial", 
"Anos iniciais 3º ano / Parcial", "Anos iniciais 4º ano / Parcial", 
"Anos iniciais 4º ano / Parcial", "Anos iniciais 4º ano / Parcial", 
"Anos iniciais 4º ano / Parcial", "Anos iniciais 5º ano / Parcial", 
"Anos iniciais 5º ano / Parcial", "Anos iniciais 5º ano / Parcial", 
"Anos iniciais 5º ano / Parcial", "1º ANO - MATUTINO/VESPERTINO", 
"1º ANO - MATUTINO/VESPERTINO", "1º ANO - MATUTINO/VESPERTINO", 
"1º ANO - MATUTINO/VESPERTINO", "2º ANO - MATUTINO/VESPERTINO", 
"2º ANO - MATUTINO/VESPERTINO", "2º ANO - MATUTINO/VESPERTINO", 
"2º ANO - MATUTINO/VESPERTINO", "3º ANO - MATUTINO/VESPERTINO", 
"3º ANO - MATUTINO/VESPERTINO", "3º ANO - MATUTINO/VESPERTINO", 
"3º ANO - MATUTINO/VESPERTINO", "4º ANO - MATUTINO/VESPERTINO", 
"4º ANO - MATUTINO/VESPERTINO", "4º ANO - MATUTINO/VESPERTINO", 
"4º ANO - MATUTINO/VESPERTINO", "5º ANO - MATUTINO/VESPERTINO", 
"5º ANO - MATUTINO/VESPERTINO", "5º ANO - MATUTINO/VESPERTINO", 
"5º ANO - MATUTINO/VESPERTINO", "Anos iniciais 1º ano / Parcial", 
"Anos iniciais 1º ano / Parcial", "Anos iniciais 1º ano / Parcial", 
"Anos iniciais 1º ano / Parcial", "Anos iniciais 2º ano / Parcial", 
"Anos iniciais 2º ano / Parcial", "Anos iniciais 2º ano / Parcial", 
"Anos iniciais 2º ano / Parcial", "Anos iniciais 3º ano / Parcial", 
"Anos iniciais 3º ano / Parcial", "Anos iniciais 3º ano / Parcial", 
"Anos iniciais 3º ano / Parcial", "Anos iniciais 4º ano / Parcial", 
"Anos iniciais 4º ano / Parcial", "Anos iniciais 4º ano / Parcial", 
"Anos iniciais 4º ano / Parcial", "Anos iniciais 5º ano / Parcial", 
"Anos iniciais 5º ano / Parcial", "Anos iniciais 5º ano / Parcial", 
"Anos iniciais 5º ano / Parcial", "1º ANO", "1º ANO", "1º ANO", 
"1º ANO", "1º ANO", "1º ANO", "2º ANO", "2º ANO", "2º ANO", "2º ANO", 
"2º ANO", "2º ANO", "3º ANO", "3º ANO", "3º ANO", "3º ANO", "3º ANO", 
"3º ANO", "4º ANO", "4º ANO", "4º ANO", "4º ANO", "4º ANO", "4º ANO", 
"5º ANO", "5º ANO", "5º ANO", "5º ANO", "5º ANO", "5º ANO", "1 º ano", 
"1 º ano", "1 º ano", "1 º ano", "1 º ano", "1 º ano", "2ºano", 
"2ºano", "2ºano", "2ºano", "2ºano", "2ºano", "3ºano", "3ºano", 
"3ºano", "3ºano", "3ºano", "3ºano", "4ºano", "4ºano", "4ºano", 
"4ºano", "4ºano", "4ºano", "5ºano")
  • If I’m not mistaken grep has a parameter ignore case.

2 answers

5


Complementing the example of Henry:

Selects all fields that have "1".

txt[grep("1", txt)]

Selects all fields that have "1" or verbatim "First".

txt[grep("1|primeiro", txt, ignore.case = TRUE)]
  • I thought about that case now, I was doing the tests. Thanks

4

You can use the parameter ignore.case of function grepas set out in documentation.

For your case:

txt <- c("1º ano", "1º ano", "1º ano", "1º ano", "2º ano", "2º ano", 
"2º ano", "2º ano", "3º ano", "3º ano", "3º ano", "3º ano", "4º ano", 
"4º ano", "4º ano", "4º ano", "5º ano", "5º ano", "5º ano", "5º ano", 
"1º ano", "1º ano", "1º ano", "1º ano", "2º ano", "2º ano", "2º ano", 
"2º ano", "3º ano", "3º ano", "3º ano", "3º ano", "4º ano", "4º ano", 
"4º ano", "4º ano", "5º ano", "5º ano", "5º ano", "5º ano", "1º ano", 
"1º ano", "1º ano", "1º ano", "2º ano", "2º ano", "2º ano", "2º ano", 
"3º ano", "3º ano", "3º ano", "3º ano", "4º ano", "4º ano", "4º ano", 
"4º ano", "5 º ano", "5 º ano", "5 º ano", "5 º ano", "1º ano", 
"1º ano", "1º ano", "1º ano", "1º ano", "2º ano", "2º ano", "2º ano", 
"2º ano", "2º ano", "3º ano", "3º ano", "3º ano", "3º ano", "3º ano", 
"4º ano", "4º ano", "4º ano", "4º ano", "4º ano", "5º ano", "5º ano", 
"5º ano", "5º ano", "5º ano", "Anos iniciais 1º ano / Parcial", 
"Anos iniciais 1º ano / Parcial", "Anos iniciais 1º ano / Parcial", 
"Anos iniciais 1º ano / Parcial", "Anos iniciais 2º ano / Parcial", 
"Anos iniciais 2º ano / Parcial", "Anos iniciais 2º ano / Parcial", 
"Anos iniciais 2º ano / Parcial", "Anos iniciais 3º ano / Parcial", 
"Anos iniciais 3º ano / Parcial", "Anos iniciais 3º ano / Parcial", 
"Anos iniciais 3º ano / Parcial", "Anos iniciais 4º ano / Parcial", 
"Anos iniciais 4º ano / Parcial", "Anos iniciais 4º ano / Parcial", 
"Anos iniciais 4º ano / Parcial", "Anos iniciais 5º ano / Parcial", 
"Anos iniciais 5º ano / Parcial", "Anos iniciais 5º ano / Parcial", 
"Anos iniciais 5º ano / Parcial", "1º ANO - MATUTINO/VESPERTINO", 
"1º ANO - MATUTINO/VESPERTINO", "1º ANO - MATUTINO/VESPERTINO", 
"1º ANO - MATUTINO/VESPERTINO", "2º ANO - MATUTINO/VESPERTINO", 
"2º ANO - MATUTINO/VESPERTINO", "2º ANO - MATUTINO/VESPERTINO", 
"2º ANO - MATUTINO/VESPERTINO", "3º ANO - MATUTINO/VESPERTINO", 
"3º ANO - MATUTINO/VESPERTINO", "3º ANO - MATUTINO/VESPERTINO", 
"3º ANO - MATUTINO/VESPERTINO", "4º ANO - MATUTINO/VESPERTINO", 
"4º ANO - MATUTINO/VESPERTINO", "4º ANO - MATUTINO/VESPERTINO", 
"4º ANO - MATUTINO/VESPERTINO", "5º ANO - MATUTINO/VESPERTINO", 
"5º ANO - MATUTINO/VESPERTINO", "5º ANO - MATUTINO/VESPERTINO", 
"5º ANO - MATUTINO/VESPERTINO", "Anos iniciais 1º ano / Parcial", 
"Anos iniciais 1º ano / Parcial", "Anos iniciais 1º ano / Parcial", 
"Anos iniciais 1º ano / Parcial", "Anos iniciais 2º ano / Parcial", 
"Anos iniciais 2º ano / Parcial", "Anos iniciais 2º ano / Parcial", 
"Anos iniciais 2º ano / Parcial", "Anos iniciais 3º ano / Parcial", 
"Anos iniciais 3º ano / Parcial", "Anos iniciais 3º ano / Parcial", 
"Anos iniciais 3º ano / Parcial", "Anos iniciais 4º ano / Parcial", 
"Anos iniciais 4º ano / Parcial", "Anos iniciais 4º ano / Parcial", 
"Anos iniciais 4º ano / Parcial", "Anos iniciais 5º ano / Parcial", 
"Anos iniciais 5º ano / Parcial", "Anos iniciais 5º ano / Parcial", 
"Anos iniciais 5º ano / Parcial", "1º ANO", "1º ANO", "1º ANO", 
"1º ANO", "1º ANO", "1º ANO", "2º ANO", "2º ANO", "2º ANO", "2º ANO", 
"2º ANO", "2º ANO", "3º ANO", "3º ANO", "3º ANO", "3º ANO", "3º ANO", 
"3º ANO", "4º ANO", "4º ANO", "4º ANO", "4º ANO", "4º ANO", "4º ANO", 
"5º ANO", "5º ANO", "5º ANO", "5º ANO", "5º ANO", "5º ANO", "1 º ano", 
"1 º ano", "1 º ano", "1 º ano", "1 º ano", "1 º ano", "2ºano", 
"2ºano", "2ºano", "2ºano", "2ºano", "2ºano", "3ºano", "3ºano", 
"3ºano", "3ºano", "3ºano", "3ºano", "4ºano", "4ºano", "4ºano", 
"4ºano", "4ºano", "4ºano", "5ºano")

grep("1º ano", txt, ignore.case = TRUE)

A functional example in Rextester.

  • ignore.case solves the case of upper and lower case letters and is already an improvement, only for cases of 1 º ano and 1ºano maybe there’s some way out

  • 1

    the special character ? sets the character that comes before it as optional. This way it would look 1 ?º ?ano, finding cases when spaces are present or not.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.