Download Expresiones regulares i scrapping
Document related concepts
Transcript
Expresiones regulares i scrapping Miquel Serrabassa José Manuel Gutiérrez @labsdata @naciodigital El concepto Una expresión regular es una secuencia de caracteres que forma un patrón de búsqueda. ¿Para qué sirve? Sirve para la búsqueda de patrones dentro de textos para su tratamiento, ya sea sustitución, búsqueda o validación. Por ejemplo, podrías encontrar... ¿Qué podría buscar? 1. 2. 3. 4. 5. 6. Nombres o patrones de letras Números de cuenta bancaria Direcciones de correo electrónico Cifras absolutas o porcentajes Códigos postales ... 1. Y… ¿Cómo lo hago? 2. 3. Editores de texto avanzados: Notepad++, PSPad, Brackets, Atom... Lenguajes de programación: PHP, C++, .Net, Javascript, R, Perl, Python, ... ... Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems. Jamie Zawinski [\w\.\-\+]+@[\w]+[\w-]*\.[a-zA-Z0-9]+[\.a-zA-Z0-9]+ Empezamos! http://regexr.com/3dcb0 Descripción de las expresiones regulares Letras o números Concordancia exacta El punto . Cualquier carácter Barra inversa \ \w Cualquier carácter alfanumérico \d Cualquier dígito (0-9) \s Espacio en blanco \n Salto de línea \r para retorno de carro \t Tabulador Negando la barra inversa \ \W Todo excepto caracteres alfanuméricos \D Cualquier carácter que no sea un dígito \S Cualquier carácter que no sea un espacio en blanco La cadena empieza por el símbolo que siga a ^ Inicio ^ ^\w Para usar en matrices de datos, comprobando inicios coincidentes en cada elemento Fin $ La cadena termina con el símbolo que precede a $ \w$ Para usar en matrices de datos comprobando finales coincidentes en cada elemento. Conjunción - “or” | En a|b, encuentra a o b. Búsqueda múltiple [...] Combinaciones de símbolos [abcd] Encuentra a,b,c o d [a-d] Encuentra a,b,c o d [a-cp-z] Encuentra dos rangos diferentes [a-zA-Z0-9] Encuentra cualquier número o letra Búsqueda múltiple inversa El símbolo ^ dentro de [] busca cualquier carácter no incluido en la expresión. [^...] [^a-d] {X} coincide con el símbolo que le precede X veces. r{2} Cuantificadores {X} {X,} coincide con el símbolo que le precede almenos X veces. r{2,} {X,Y} coincide con el símbolo que entre X e Y veces. r{2,3} + Encuentra el símbolo precedente una o más veces Cuantificadores II *, + y ? * Encuentra el símbolo precedente cero o más veces. ? Encuentra el símbolo precedente cero o una vez ac+ {1,} → ac,acc,accc.. ac* {0,} → a,ac,acc... ac? {0,1} → a y ac Agrupación (...) Incluye un grupo de símbolos dentro de la expresión (ac)+ ac,acac,acacac Referenciales \# donde # es un número. Coincide con la expresión entre paréntesis que se encuentre en la posición # (na)\w+\1 Casos prácticos Nombres maria|jose|juan gmail|hotmail Códigos postales ? DNI [0-9]{1,2}((\.[\d]{3}){2}| [0-9]{6})[a-zA-Z] Correos electrónicos [\w\.\-\+]+@[\w]+[\w-]*\. [a-zA-Z0-9]+[\.a-zA-Z0-9]+ Números de cuenta IBAN [a-zA-Z]{2}[0-9]{2}[a-zAZ0-9]{4}[0-9]{7}([a-zA-Z09]?){0,16} ¿Jugamos? Regex Golf http://regex.alf.nu/