Как удалить пробел в строке или сделать регулярное выражение, которое будет принимать все типы допустимых писем - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть строка, которая разделена "," как string:= "abc@bk.com, cde@bk.com" Я хочу создать регулярное выражение, которое будет охватывать все пробелы после и до сообщений электронной почты, или есть другая функция strings.Replace для замены пробела?Они оба выполняют одну и ту же работу, но я не знаю, что лучше.Если регулярное выражение лучше, то вы приводите пример, а если функция strings.Replace лучше, приведите пример этого.Я попробовал небольшой код: -

package main

import (
  "fmt"
  "regexp"
  "strings"
)

type User struct {
  Name []CustomerDetails `json:"name" bson:"name"`
}
type CustomerDetails struct {
  Value             string `json:"value" bson:"value"`
  Note              string `json:"note" bson:"note"`
  SendNotifications bool   `json:"send_notifications" bson:"send_notifications"`
}

func main() {
  var emailRegexp = regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")
  var custName User
  emails := "abc@bk.com, cde@bk.com"
  splitEmails := strings.Split(emails, ",")
  fmt.Println(splitEmails)
  for _, email := range splitEmails {
    email = strings.Replace(email, " ", "", -1)
    if emailRegexp.MatchString(email) {
        custName.Name = append(custName.Name, CustomerDetails{
            Value: email,
        })
    }
  }
  fmt.Println(custName)
}

Этот пример основан на функции strings.Replace.Кто-нибудь может помочь мне решить эту проблему?

Спасибо за ваше драгоценное время.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Вы можете использовать .strip() для очистки пробелов с обеих сторон.
или re.split() для разделения по шаблону /,\s*/.

0 голосов
/ 22 ноября 2018

Не используйте регулярные выражения для этого.Ваш текущий подход к разделению на пустые места будет нарушен действительными адресами электронной почты, которые содержат пробелы.Хотя можно проанализировать многие адреса электронной почты с помощью регулярного выражения, необходимое регулярное выражение очень, очень некрасиво , и даже это не обрабатывает все угловые случаи.

Вместо этого, чтобыанализируя список адресов электронной почты, вы должны использовать стандартную библиотеку mail.ParseAddressList .

...