English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Explicação detalhada do operador de expressão regular personalizado =~ em Swift

What are regular expressions?

Regular expressions, also known as regular expressions, conventional expressions (English: Regular Expression, commonly abbreviated as regex, regexp, or RE in code), are a concept in computer science. Regular expressions use a single string to describe and match a series of strings that conform to a certain syntax rule. Regular expressions are often used in many text editors to search for and replace text that matches a certain pattern.

Swift has not yet supported regular expressions at the language level, and regular expressions may not be used very often in app development.

Encapsulation

In Cocoa, we can use NSRegularExpression to perform regular expression matching, so we encapsulate a RegularExpHelper on the basis of NSRegularExpression to match whether a string conforms to a certain regular expression.

struct RegularExpHelper {
 let RegularExp: NSRegularExpression 
 init(_ pattern: String) throws {
  try RegularExp = NSRegularExpression(pattern: pattern, options: .caseInsensitive)
 } 
 func match(inpuut: String) -> Bool {
  let matches = RegularExp.matches(in: inpuut, options: [], range: NSMakeRange(0, inpuut.count))
  return matches.count > 0
 }
}

Custom =~

With the encapsulated RegularExpHelper, we can conveniently customize operators.

infix operator =~ : ATPrecedence
precedencegroup ATPrecedence {
 associativity: none
 higherThan: AdditionPrecedence
 lowerThan: MultiplicationPrecedence
}
func =~ (input: String, RegularExp: String) -> Bool {
 do {
  return try RegularExpHelper(RegularExp).match(inpuut: input)
 }
  return false
 }
}

definição de operador

  • infix indica a definição de um operador infixo (ambos antes e após a entrada são entradas)
  • prefix indica a definição de um operador pré-fixo (o que vem antes da entrada)
  • postfix indica a definição de um operador pós-fixo (o que vem após a entrada)

associativity (lei de combinação)

é a ordem de cálculo quando vários operadores do mesmo tipo aparecem em seqüência

  • left (ordem de esquerda para direita)
  • right (ordem de direita para esquerda)
  • none (padrão é none, não será combinado)

Precedência

  • higherThan tem precedência maior que AdditionPrecedence (adição)
  • lowerThan tem precedência menor que MultiplicationPrecedence (multiplicação e divisão)

então podemos usá-lo

 if "[email protected]" =~ "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.2,6})$" {
  print("Atende às regras de e-mail")
 }
  print("Não atende às regras de e-mail")
 }

Atenção

  • Atenção ao uso de caracteres de escape em strings de expressões regulares.
  • Os operadores do Swift não podem ser definidos em domínios locais, porque os operadores precisam ser usados em escalas globais.
  • Existem muitos riscos em sobrecarregar e personalizar operadores, por favor, pergunte-se várias vezes se realmente precisa fazer isso!

Resumo

Isso é tudo sobre este artigo. Espero que o conteúdo deste artigo tenha algum valor de referência para o seu aprendizado ou trabalho. Se tiver dúvidas, pode deixar um comentário para trocar. Obrigado pelo apoio ao Tutorial de Grito.

Declaração: O conteúdo deste artigo é extraído da Internet, pertence ao respectivo proprietário, foi submetido e carregado voluntariamente pelos usuários da Internet, este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade por questões legais relacionadas. Se você encontrar conteúdo suspeito de infringir direitos autorais, por favor, envie um e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @ para denunciar e forneça provas relevantes. Em caso de verificação, o site deletará imediatamente o conteúdo suspeito de infringir direitos autorais.)

Você também pode gostar