-
Expresión regular:
Las expresiones regulares permiten a los usuarios construir un patrón coincidente utilizando una serie de caracteres especiales y luego comparar el patrón coincidente con objetos de destino, como archivos de datos, entradas de programas y entradas de formularios en páginas WEB, dependiendo de si el objeto de comparación contiene la coincidencia. patrón, ejecute el programa correspondiente. Regularity se ha ganado el amor de los programadores por su sencillez, practicidad y rapidez. 
Algunas ideas sobre escribir expresiones regulares:
1. Primero, determine las reglas. ¿Qué tipo de cuerda necesitas unir, de qué partes se compone y qué características tiene?
2. Proponga la unidad más pequeña. A veces, algunas reglas de coincidencia se repiten. Podemos intentar encontrar puntos comunes y planificarlos en una regla.
3. Escribe las reglas regulares una por una según sus reglas y unidades más pequeñas.
4. Unifica la combinación de estas regularidades unitarias para formar la regularidad completa que desees.
Aquí necesitamos comprender algunas etiquetas básicas y su uso. Todas las reglas se componen de etiquetas básicas. El marcado normal también es muy simple, por lo que es mejor que lo entiendas.
Etiquetas de uso común en expresiones regulares
1 Marcadores de uso común en expresiones regulares 2 ^ | Principio de una línea o cadena 3 $ | Fin de una línea o cadena 4 Caracteres distintos de nuevas líneas 5 w | Caracteres que no son palabras 7 d | Números (equivalentes a [0-9]) 8 D | Caracteres que no son espacios en blanco 9 10 A Inicio de la cadena 11 Z | Fin de la cadena 13 14 s | Carácter en blanco 15 S | Carácter que no está en blanco 16 17 b | Límite de palabra (fuera de []) 18 B | ] | Cualquier carácter del conjunto, con un guión en el medio, representa un rango, como por ejemplo: [0-9], [az]21? 22 | 25 * | cero o más expresiones anteriores 26 *? | cero o más expresiones anteriores (no codiciosas) 29 {m,n} | mn expresiones anteriores 30 {m,n}? | mn expresiones anteriores (no codiciosas) 31 32 33 También {?=} { ?!} (?>) (?#) (?imx-imx) etc.
El ejemplo más básico:
1 # Coincide con toda la cadena 2 puts /ruby/ =~ "ruby" # 0 3 puts /ruby/ =~ "Ruby" # nil 4 5 # Coincide con el principio y el final de una línea o cadena 6 str = "abcdef" 7 pone str 8 pone /^abc/ =~ str # 0 9 pone /def$/ =~ str # 310 11 str = "abcndefn" 12 pone /^abc/ =~ str # 013 pone /def$/ =~ str # 414 puts /abc/ =~ str # 015 puts /def/ =~ str # 416 17 #Hace coincidir el principio y el final de la cadena misma 18 str = "abcndefn" 19 puts /Aabc/ =~ str # 020 pone /defZ/ =~ str # 421 puts /defz/ =~ str # nil22 23 #Coincide con caracteres de palabras 24 pone "Coincide con caracteres de palabras" 25 patrón = /w/26 pone patrón = ~ "abc " # 027 puts patrón =~ "." # nil28 29 # Coincide con entero 30 # d Número 31 # D No número 32 puts "Coincide con número" 33 puts /d/ =~ "122" #034 puts /D / =~ "122" #nil35 puts /D/ =~ "abc" #036 37 38 #Border 39 str = "¡Este es tu amigo!"40 puts str41 puts str.gsub(/b/ ,"|" ) # |Este| |es| |tu |amigo|!42 puts str.gsub(/B/,"-") # ¡Este es tu amigo!-43
Instancia calificadora
1 pone "calificador" 2 pone "calificador: *" 3 pone /(abc)*/ =~ "a" # 0 4 pone /(abc)*/ =~ "abc" # 0 5 6 7 pone "calificador Calificador: +" 8 pone /(abc)+/ =~ "a" # nil 9 pone /(abc)+/ =~ "abc" # 010 11 pone "Calificador: ?" 12 pone /(abc)?/ =~ " c" # 013 pone /(abc)?/ =~ "abc" # 014 15 16 pone "Calificador: {n}"17 pone /(abc){2}/ =~ "abc" # nil18 pone /(abc) {2}/ =~ "abcabc" # 019 20 pone "Calificador: {n,}"21 pone /(abc){2,}/ =~ "abc" # nil22 pone /(abc){ 2,}/ = ~ "abcabc" # 023 24 pone "Calificador: {n,m}"25 pone /(abc){2,3}/ =~ "abc" # nil26 pone /(abc){2, 3}/ =~ " abcabcabc" # 027 28 pone "Calificador: *?" 29 pone /(abc)*?/ =~ "a" # 030 pone /(abc)*?/ =~ "abcabc" # 031 32 pone "Calificador: +? " 33 pone /(abc)+?/ =~ "a" # nil34 pone /(abc)+?/ =~ "abcabc" # 035 36 pone "Calificador: ??"37 pone /(abc)??/ = ~ "a" # 038 puts /(abc)??/ =~ "abcabc" # 039 40 41 #match, {1} {3}42 # {3} puede coincidir, entonces {1} definitivamente coincidirá, pero el lo contrario no es cierto 43 # Rango coincidente: {1} > {3}
Ejemplos comunes:
1 pone "ejemplo" 2 #Coincide con números de teléfono: 3 #Generalmente, los números de teléfono chinos tienen entre 7 y 8 dígitos, los códigos de área son enteros de 3 a 4 dígitos, el primer dígito del código de área es 0 y el separador '-' es usado en el medio 4 #Presta atención a la primera y última restricción Símbolo 5 patrón = /^0d{2,3}-d{7,8}$/ 6 pone patrón =~ "010-82809999" # 0 7 pone patrón =~ "00010-82809999" # nil 8 9 #Coincide con el número de teléfono móvil 10 # Comenzando con 1, el segundo dígito es 3, 5, 8, 11 dígitos 11 patrón = /^1[3,5,8] d{9}$/12 puts patrón =~ "15810990001" #013 14 #DNI número 15 patrón = /d{18}|d{15}/16 17 #Coincide IP18 #Cuatro grupos de números enteros no mayores que 255, separados por '.' 19 pone "IP" 20 num = /^d|[01]?d{1,2}|2[0-4]d|25[0-5]/21 patrón = /^(#{num}.){3} #{num}$/22 #Un entero: patrón = /^(^d|[01]?d{1,2}|2[0- 4]d|25[0-5].) {3}^d|[01]?d{1,2}|2[0-4]d|25[0-5]$/ 23 pone patrón =~ "127.0.0.1" # 024 pone patrón =~ "254.255.255.255"25 26 #Coincide con la dirección de correo electrónico 27 patrón = /^w+@w+.w+$/ #Esto no tiene '-' 28 patrón = /^[w-]+@[w- ]+.[w-]+$/29 pone patrón =~ " [email protected] " #030 31 # Coincidencia url32 # http:// www.google.cn33 patrón = /(http|https|ftp): (//|\\)((w)+[.]){1,}(net|com|cn|org| cc|tv|[0-9]{1,3})( ((/[~]*|\[~]*)34 (w)+)|[.](w)+ )*(((([?](w)+){ 1}[=]*))*((w)+){1}([&](w)+[=]( w)+)*)*/35 36 pone patrón =~ " http://www.google.cn?uid=123 " #0
otro
El significado de la codicia.
1 pone "codicioso" 2 #Codicioso significa hacer coincidir la cadena más larga posible 3 # '.' Significado: caracteres distintos de las nuevas líneas 4 str = "donde el mar se encuentra con la tierra blanqueada por la luna" 5 pone str 6 match = /.* the/.match(str) 7 pone match[0] # donde el mar se encuentra con, * es codicioso. Si no quiere ser codicioso, agregue + '?' 8 #*?non-greedy 9 match = /.*?the/.match(str)10 puts match[0] # donde the11 12 str.insert( 0,"Hola n")13 match = /.*?the/.match(str)14 pone match[0] #donde
Vista previa positiva y negativa
1 #Vista previa positiva y negativa 2 pone "Vista previa positiva y negativa" 3 s1 = "Diccionario del Nuevo Mundo" 4 s2 = "Sinfonía del Nuevo Mundo" 5 s3 = "Nuevo Orden Mundial" 6 7 reg = /Nuevo Mundo (?=Diccionario| Symphony)/ 8 m1 = reg.match(s1) 9 pone m1.to_a[0] # "Nuevo Mundo"10 m2 = reg.match(s2)11 pone m2.to_a[0] # "Nuevo Mundo"12 pone reg .match(s3) # nil13 14 pone "vista previa negativa"15 16 reg = /New World (?!Symphony)/ # No hay "Symphony" después de "New World" 17 puts reg.match(s1).to_a[0 ] # "Nuevo Mundo"18 pone reg.match(s2).to_a[0] # nil19 pone reg.match(s3).to_a[0] # "Nuevo Mundo"
-