A função MySQL REGEXP_REPLACE() é usada para correspondência de padrões. Esta função pesquisa uma string em busca de um padrão de expressão regular e substitui cada ocorrência do padrão com a string especificada que corresponde ao padrão de expressão regular fornecido. Se a correspondência for encontrada, ele retornará a string inteira junto com as substituições. Se nenhuma correspondência for encontrada, a string retornada permanecerá inalterada. Se a expressão, os padrões e a string de substituição forem NULL, a função retornará NULL.
REGEXP_REPLACE(), SUBSTITUIR(), e a TRADUÇÃO() funcionar em MySQL are funciona da mesma forma, exceto que TRANSLATE nos permite fazer múltiplas substituições de um único caractere e a função REPLACE substitui uma string inteira por outra string, enquanto REGEXP_REPLACE pesquisa uma string por um padrão de expressão regular.
Sintaxe
A seguir está uma sintaxe básica para usar esta função no MySQL:
gráfico de algarismos romanos 1 100
REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]])
Explicação do parâmetro
A explicação dos parâmetros da função REGEXP_REPLACE() é:
expressão: É uma string de entrada na qual realizaremos pesquisas através de parâmetros e funções de expressões regulares.
padrões: Representa o padrão de expressão regular para uma substring.
substituir_string: É uma substring que será substituída se a correspondência for encontrada.
A função REGEXP_INSTR() usa vários parâmetros opcionais fornecidos abaixo:
posição: É usado para especificar a posição na expressão dentro da string para iniciar a pesquisa. Se não especificarmos este parâmetro, ele começará na posição 1.
ocorrência: É usado para especificar qual ocorrência de correspondência iremos pesquisar. Se não especificarmos este parâmetro, todas as ocorrências serão substituídas.
tipo de partida: É uma string que nos permite refinar a expressão regular. Ele usa os seguintes caracteres possíveis para realizar a correspondência.
Vamos entender isso com vários exemplos.
Exemplo
A instrução a seguir explica o exemplo básico da função REGEXP_REPLACE no MySQL.
mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String';
Aqui está o resultado:
Suponha que nossa string de entrada contenha múltiplas correspondências dentro da string , então esta função substituirá todos eles. Veja as afirmações abaixo:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String';
Aqui está o resultado:
Se a string de entrada e a string substituível não corresponderem, as instruções retornarão a string original. Veja o exemplo abaixo:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String';
Aqui está o resultado:
Se quisermos substituir a string por especificando a posição para iniciar a substituição, podemos usar a função REGEX_REPLACE da seguinte forma:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String';
Nesta instrução, especificamos a posição como 2 para iniciar a substituição. Executando esta consulta, obteremos a saída abaixo, onde podemos ver que a primeira posição da string substituível não foi substituída.
Sabemos que todas as ocorrências da string correspondente são substituídas por padrão. No entanto, também temos a opção de especificar a ocorrência específica para substituir a string correspondente usando o comando ocorrência parâmetro. Veja o exemplo abaixo:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String';
Neste exemplo, a posição inicial da string substituível é 2, que veio após o início da primeira ocorrência. Portanto, a ocorrência 2 tornou-se ocorrência 1 e a ocorrência 3 tornou-se ocorrência 2. Veja o resultado abaixo:
Podemos fornecer um parâmetro adicional para refinar a expressão regular usando argumentos de tipo de correspondência. Por exemplo , podemos usá-lo para verificar se a correspondência diferencia maiúsculas de minúsculas ou inclui terminadores de linha. Veja o exemplo abaixo onde estamos especificando um maiúsculas e minúsculas e correspondência sem distinção entre maiúsculas e minúsculas:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'c') AS ' Case-Sensitive', REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'i') AS ' Case-Insensitive';
Aqui está o resultado: