-
Expressão regular:
Expressões regulares permitem que os usuários construam um padrão de correspondência usando uma série de caracteres especiais e, em seguida, comparem o padrão de correspondência com objetos de destino, como arquivos de dados, entrada de programa e entrada de formulário em páginas da WEB, dependendo se o objeto de comparação contém a correspondência. padrão, execute o programa correspondente. A regularidade conquistou o amor dos programadores pela sua simplicidade, praticidade e rapidez. 
Algumas reflexões sobre como escrever regex:
1. Primeiro, determine as regras. Que tipo de corda você precisa combinar, em que partes ela consiste e quais características ela possui.
2. Proponha a menor unidade. Às vezes, algumas regras de correspondência são repetidas. Podemos tentar encontrar pontos comuns e planejá-los em uma regra.
3. Escreva as regras regulares uma por uma de acordo com suas regras e menores unidades.
4. Unifique a combinação dessas regularidades unitárias para formar a regularidade completa desejada.
Aqui precisamos entender algumas tags básicas e seu uso. Quaisquer regras são compostas de tags básicas. A marcação regular também é muito simples, então você também pode entendê-la.
Tags comumente usadas em expressões regulares
1 Marcadores comumente usados em expressões regulares 2 ^ | Início de uma linha ou string 3 $ | Fim de uma linha ou string 4 . Caracteres que não são palavras 7 d | Números (equivalente a [0-9]) 8 D | Caracteres que não são espaços em branco 9 10 A | Início da string 11 Z | Fim da string ou último caractere de nova linha 12 z | Fim da string 13 14 s | Caractere em branco 15 S | Caractere não em branco 16 17 b | Limite de palavra (fora de []) 18 B | Limite de não palavra 19 b | ] | Qualquer caractere do conjunto, com um hífen no meio, representa um intervalo, como: [0-9], [az]21 | 25 * | zero ou mais expressões anteriores 26 *? | zero ou mais expressões anteriores (não gananciosas) 29 {m,n} | mn expressões anteriores 30 {m,n}? | mn expressões anteriores (não gananciosas) 31 32 33 Também {?=} { ?!} (?>) (?#) (?imx-imx) etc.
O exemplo mais básico:
1 # Combine a string inteira 2 puts /ruby/ =~ "ruby" # 0 3 puts /ruby/ =~ "Ruby" # nil 4 5 # Combine o início e o fim de uma linha ou string 6 str = "abcdef" 7 puts str 8 puts /^abc/ =~ str # 0 9 puts /def$/ =~ str # 310 11 str = "abcndefn" 12 puts /^abc/ =~ str # 013 puts /def$/ =~ str # 414 puts /abc/ =~ str # 015 puts /def/ =~ str # 416 17 #Corresponde ao início e ao fim da string em si 18 str = "abcndefn" 19 puts /Aabc/ =~ str # 020 puts /defZ/ =~ str # 421 puts /defz/ =~ str # nil22 23 #Corresponder caracteres da palavra 24 puts "Corresponder caracteres da palavra" 25 padrão = /w/26 puts padrão = ~ "abc " # 027 puts padrão =~ "." # nil28 29 # Número inteiro correspondente 30 # d Número 31 # D Não-número 32 puts "Número correspondente" 33 puts /d/ =~ "122" #034 puts /D / =~ "122" #nil35 puts /D/ =~ "abc" #036 37 38 #Border 39 str = "Este é seu amigo!"40 puts str41 puts str.gsub(/b/ ,"|" ) # |Este| |é| |seu| |amigo|!42 puts str.gsub(/B/,"-") # Este é seu amigo!-43
Instância de qualificador
1 puts "qualificador" 2 puts "qualificador: *" 3 puts /(abc)*/ =~ "a" # 0 4 puts /(abc)*/ =~ "abc" # 0 5 6 7 puts "qualificador Qualificador: +" 8 puts /(abc)+/ =~ "a" # nil 9 puts /(abc)+/ =~ "abc" # 010 11 puts "Qualificador: ?" 12 puts /(abc)?/ =~ " c" # 013 puts /(abc)?/ =~ "abc" # 014 15 16 puts "Qualificador: {n}"17 puts /(abc){2}/ =~ "abc" # nil18 puts /(abc) {2}/ =~ "abcabc" # 019 20 puts "Qualificador: {n,}"21 puts /(abc){2,}/ =~ "abc" # nil22 puts /(abc){ 2,}/ = ~ "abcabc" # 023 24 puts "Qualificador: {n,m}"25 puts /(abc){2,3}/ =~ "abc" # nil26 puts /(abc){2, 3}/ =~ " abcabcabc" # 027 28 puts "Qualificador: *?" 29 puts /(abc)*?/ =~ "a" # 030 puts /(abc)*?/ =~ "abcabc" # 031 32 puts "Qualificador: +? " 33 puts /(abc)+?/ =~ "a" # nil34 puts /(abc)+?/ =~ "abcabc" # 035 36 puts "Qualificador: ??"37 puts /(abc)??/ = ~ "a" # 038 puts /(abc)??/ =~ "abcabc" # 039 40 41 #match, {1} {3}42 # {3} pode corresponder, então {1} definitivamente corresponderá, mas o reverso não é verdadeiro 43 # Intervalo de correspondência: {1} > {3}
Exemplos comuns:
1 coloca "exemplo" 2 #Corresponde aos números de telefone: 3 #Geralmente, os números de telefone chineses têm de 7 a 8 dígitos, os códigos de área são números inteiros de 3 a 4 dígitos, o primeiro dígito do código de área é 0 e o separador '-' é usado no meio 4 #Preste atenção na primeira e última restrições Símbolo 5 padrão = /^0d{2,3}-d{7,8}$/ 6 puts padrão =~ "010-82809999" # 0 7 puts padrão =~ "00010-82809999" # nulo 8 9 #Corresponde ao número do celular 10 # Começando com 1, o segundo dígito é 3, 5, 8, 11 dígitos 11 padrão = /^1[3,5,8] d{9}$/12 puts pattern =~ "15810990001" #013 14 #ID card number 15 pattern = /d{18}|d{15}/16 17 #Match IP18 #Quatro grupos de números inteiros não maiores que 255, separado por '.' 19 coloca "IP" 20 num = /^d|[01]?d{1,2}|2[0-4]d|25[0-5]/21 padrão = /^(#{num}.){3} #{num}$/22 #Um todo: padrão = /^(^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 puts padrão =~ "127.0.0.1" # 024 puts padrão =~ "254.255.255.255"25 26 #Match email address 27 pattern = /^w+@w+.w+$/ #Isso não tem '-' 28 padrão = /^[w-]+@[w- ]+.[w-]+$/29 puts padrão =~ " [email protected] " #030 31 # Corresponde url32 # http:// padrão www.google.cn33 = /(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 coloca padrão =~ " http://www.google.cn?uid=123 " #0
outro
O significado da ganância
1 coloca "ganancioso" 2 #Greedy significa combinar a string mais longa possível 3 # '.' Significado: caracteres diferentes de novas linhas 4 str = "onde o mar encontra a terra escaldada pela lua" 5 coloca str 6 match = /.* the/.match(str) 7 coloca match[0] # onde o mar encontra o, * é ganancioso. Se você não quiser ser ganancioso, adicione + '?' 8 #*?non-greedy 9 match = /.*?the/.match(str)10 puts match[0] # where the11 12 str.insert( 0,"Olá n")13 match = /.*?the/.match(str)14 coloca match[0] #onde o
Visualização positiva e negativa
1 #Visualização positiva e negativa 2 coloca "Visualização positiva e negativa" 3 s1 = "Novo Dicionário Mundial" 4 s2 = "Nova Sinfonia Mundial" 5 s3 = "Nova Ordem Mundial" 6 7 reg = /Novo Mundo (?=Dicionário| Symphony)/ 8 m1 = reg.match(s1) 9 puts m1.to_a[0] # "Novo Mundo"10 m2 = reg.match(s2)11 puts m2.to_a[0] # "Novo Mundo"12 puts reg .match(s3) # nil13 14 puts "negative preview"15 16 reg = /New World (?!Symphony)/ # Não há "Symphony" depois de "New World" 17 puts reg.match(s1).to_a[0 ] # "Novo Mundo"18 coloca reg.match(s2).to_a[0] # nil19 coloca reg.match(s3).to_a[0] # "Novo Mundo"
-