Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

197
Views
Grupos de contactos coincidentes de expresiones regulares

Tengo problemas al tratar de escribir un patrón de coincidencia PHP Regex para hacer coincidir y dividir la cadena en los grupos necesarios.

Esta es la situación... Tengo múltiples cadenas con contactos:

+35 00000000, info@company.com, www.company.com
Esto me daría:
Grupo 1: +35 00000000, info@company.com, www.company.com

+35 00000000, +360000000, info@company.com, www.company.com
Esto me daría:
Grupo 1: +35 00000000
Grupo 2: +36 00000000, info@company.com, www.company.com

info@company.com, www.company.com
Esto me daría:
Grupo 1: info@empresa.com, www.empresa.com

+35 00000000, info@company1.com, www.company1.com, +36 00000000, info@company2.com, www.company2.com
Esto me daría:
Grupo 1: +35 00000000, info@company1.com, www.company1.com
Grupo 2: +36 00000000, info@company2.com, www.company2.com

Como puede ver, estas cadenas pueden ser diferentes. Lo que debo hacer es dividir esas cadenas en grupos de contactos, que:

  • a menudo comienzan con el número de teléfono (+), pero no siempre y pueden contener solo uno
  • puede comenzar con el enlace del sitio web o con el correo electrónico si no se proporciona un teléfono
  • puede contener varios grupos de diferentes empresas

Entonces, al principio traté de hacer coincidir los grupos que comenzaban con el número de teléfono y terminaban con el sitio web:

 ((\+?[\d ]+)?(, )?(.*)(, )?(www\.\w+\.\w{2,})?)

Pero esto no coincide exactamente. También intenté simplificar todo lo relacionado con los grupos de coincidencias de hormigas que comienzan con números de teléfono:

 (\+[\d ]+).*

Pero esto coincide con cadenas completas.

Tengo que decir que soy un gran novato con respecto a Regex. Me las arreglo para hacer coincidencias básicas, pero esto es demasiado difícil para mí.

La duración del patrón o el bajo rendimiento no son importantes, ya que será una ejecución única.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Puedes obtener las coincidencias usando:

 (?:\+?\d+(?:\h+\d+)*,\h*)?[^\s@]+@[^\s@,]+,\h*www\.\S+|\+?\d+(?:\h+\d+)*

El patrón coincide:

  • (?:\+?\d+(?:\h+\d+)*,\h*)? Haga coincidir un + opcional y luego dígitos con espacios opcionales
  • [^\s@]+@[^\s@,]+ Coincide con un patrón similar a un correo electrónico que solo coincide con una sola @
  • ,\h*www\.\S+ Coincide con a , seguido de www. y 1+ caracteres que no sean espacios en blanco
  • | O
  • \+?\d+\h*\d+ Coincide con el número de teléfono como patrón

Demostración de expresiones regulares

O hacer coincidir ambas formas para la URL y la dirección de correo electrónico usando una alternancia |

 (?:\+?\d+(?:\h+\d+)*,\h*)?(?:[^\s@]+@[^\s@,]+,\h*www\.\S+|\h*www\.\S+,\h*[^\s@]+@[^\s@,]+)|\+?\d+(?:\h+\d+)*

Demostración de expresiones regulares

over 4 years ago · Santiago Trujillo Report

0

Puede obtener las coincidencias con los grupos esperados usando

 (?=[^\s,])(\+?\d(?:[\d\s]*\d)?)?(?:(?:,\s*)?(\S+@\S+)\b)?(?:(?:,\s*)?(www\.\S+)\b)?

Vea la demostración de expresiones regulares .

Tenga en cuenta que (?=[^\s,]) búsqueda anticipada se usa para evitar la coincidencia de cadenas vacías.

Detalles :

  • (?=[^\s,]) - el siguiente carácter debe ser un carácter que no sea una coma y un espacio en blanco
  • (\+?\d(?:[\d\s]*\d)?)? - un Grupo 1 opcional: un + opcional, un dígito y luego una ocurrencia opcional de cero o más dígitos y espacios en blanco y luego un dígito
  • (?:(?:,\s*)?(\S+@\S+)\b)? - una ocurrencia opcional de
    • (?:,\s*)? - una ocurrencia opcional de una coma y cero o más espacios en blanco
    • (\S+@\S+)\b - Grupo 2: uno o más espacios que no son en blanco, @ , uno o más espacios que no son en blanco, un límite de palabra
  • (?:(?:,\s*)?(www\.\S+)\b)? - una ocurrencia opcional de
    • (?:,\s*)? - una ocurrencia opcional de una coma y cero o más espacios en blanco
    • (www\.\S+)\b - Grupo 3: www. , uno o más espacios que no sean en blanco, límite de palabra.
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!