Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

210
Visualizações
Capture y edite parte de la cadena usando expresiones regulares en PHP

Tengo que revisar varias cadenas... el formato de cada cadena podría ser el siguiente:

 I-IVWM_Ask-21_(max_2h)

o

 D-7849_DG303_(max_4h)

o

 Aliante_Privato

Necesito capturar el texto entre corchetes, la primera parte de la cadena fuera de los corchetes y reemplazar el guión bajo con espacios.

Estoy tratando de usar preg_match en PHP, como sigue

 preg_replace('/\([^)]*\)|[()]/', '', $string);

El código anterior elimina la cadena y los corchetes, pero deja el guión bajo y no captura la cadena dentro de los corchetes.

¿Alguna ayuda para resolver mi problema? Gracias

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Lo que podría hacer es primero hacer coincidir el patrón y, para la coincidencia, reemplace los paréntesis y los guiones bajos con un espacio usando preg_replace_callback .

Patrón para combinar con las cuerdas:

 ^[^\s()]+(?:\([^()]*\))?$
  • ^ Comienzo de cadena
  • [^\s()]+ Match 1+ caracteres que no sean paréntesis o espacios en blanco
  • (?:\([^()]*\))? Opcionalmente, haga coincidir la parte entre paréntesis.
  • $ Fin de la cadena

Demostración de expresiones regulares | demostración de php

Por ejemplo

 $strings = [ "I-IVWM_Ask-21_(max_2h)", "D-7849_DG303_(max_4h)", "Aliante_Privato" ]; foreach ($strings as $str) { $pattern = "/^[^\s()]+(?:\([^()]*\))?$/"; echo preg_replace_callback($pattern, function ($x) { return trim(preg_replace("/[()_]+/", " ", $x[0])); }, $str) . PHP_EOL; }

Producción

 I-IVWM Ask-21 max 2h D-7849 DG303 max 4h Aliante Privato
over 4 years ago · Santiago Trujillo Relatório

0

$strings = [ "I-IVWM_Ask-21_(max_2h)", "D-7849_DG303_(max_4h)", "Aliante_Privato" ]; $result = array_map('trim', preg_filter('~[_()]+~', ' ', $strings));
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda