Habilidades de expresión regular de MATLAB

Prefacio

Las expresiones regulares de MATLAB se utilizan para buscar rápidamente cadenas coincidentes. En comparación con la función strfind para encontrar coincidencias exactas de caracteres, las expresiones regulares pueden definir patrones de búsqueda específicos . La expresión regular construida en inglés es patrón , pero la gramática de la expresión regular es más complicada de usar y los escenarios de uso no son familiares, y la expresión regular no realiza su función debida. A continuación se presentan varios escenarios de uso típicos para mejorar la simplicidad del programa y hacerlo más conveniente.

Funciones de expresión regular

  1. regexp
  2. regexpi
  3. regexptranslate

Pasos para construir una expresión

El siguiente contenido se ha extraído de la documentación de ayuda de MATLAB:

  • Determinar el patrón único en la cadena
    Esto requiere dividir el texto que se buscará de acuerdo con la similitud de la forma del carácter. Estos caracteres pueden tener la forma de una serie de letras minúsculas, un signo de dólar seguido de tres números, seguido de un punto decimal, etc.
  • Exprese cada patrón como una expresión regular
    Utilice los metacaracteres y operadores descritos en este documento para representar cada segmento del patrón de búsqueda como una expresión regular. Luego, combine estos segmentos de expresión en una sola expresión para usar en la búsqueda.
  • Llame a la función de búsqueda adecuada
    Pase el texto a analizar a una de las funciones de búsqueda (por ejemplo, regexp o regexpi), oa la función de reemplazo de texto regexprep.

Encuentra rápidamente la cuerda en la cabeza.

Por ejemplo, la cadena "ess.init.plant" se usa para obtener la cadena "ess"; puede agregar un carácter especial a la cadena, usar el carácter especial como un bit marcador y usar "." Como otro bit marcador para construir una expresión regular El patrón coincide con la cadena principal. Finalmente, se borra el bit de marca agregado.

longName = 'ess.init.plant';
name= regexp( [ '$', longName], '\$\w*\.', 'match' );
name = name{
    
     1 }(2:end-1);

Uso flexible de etiquetas en expresiones regulares

El siguiente contenido es del documento de ayuda de MATLAB para la función regexp:

El texto de la etiqueta es el texto coincidente que corresponde a la parte de la expresión regular. Para crear un texto de etiqueta, incluya la parte de la expresión regular entre paréntesis. La opción de tokens es 'tokens', que se utiliza para capturar el texto de los tokens.

str = 'Here is a date: 01-Apr-2020';
expression = '(\d+)-(\w+)-(\d+)';
mydate = regexp(str,expression,'tokens');
mydate{
    
    :}

años =

'01'    'April'    '2020'

Usando tokens, combinados con tokens, puede hacer coincidir directamente el contenido entre paréntesis en lugar de todo el contenido que coincida con las expresiones regulares. Cuando se usa la opción de coincidencia, coincide con todo el contenido que coincide con la expresión regular:

str = 'Here is a date: 01-Apr-2020';
expression = '(\d+)-(\w+)-(\d+)';
mydate = regexp(str,expression,'match');
mydate{
    
    :}

años =

'01-Apr-2020'

Para el texto de la etiqueta, también puede usar la opción de nombre, con la gramática? <nombre>, nombrar directamente el contenido que coincide con el texto de la etiqueta específica, de modo que el contenido del texto de la etiqueta coincidente se pueda identificar más fácilmente:

str = 'Here is a date: 01-Apr-2020';
expression = '(?<day>\d+)-(?<month>\w+)-(?<year>\d+)';
mydate = regexp(str,expression,'names')

mydate =

Una estructura con los siguientes campos:

  day: '01'
month: 'Apr'
 year: '2020'

La conexión entre el lema y el número

A cada ficha de la expresión se le asigna un número, comenzando desde 1 y aumentando secuencialmente de izquierda a derecha. Para citar una etiqueta después de una expresión, use una barra invertida seguida del número de etiqueta para citar. Por ejemplo, al hacer referencia al texto de la etiqueta generado por el tercer conjunto de corchetes en la expresión, utilice \ 3

Capture pares de etiquetas HTML coincidentes (como <a> y </ a>) y el texto entre estas etiquetas

hstr = '<!comment><a name="752507"></a><b>Default</b><br>';
expr = '<(\w+).*?>.*?</\1>';
[mat,tok] = regexp(hstr, expr, 'match', 'tokens');
mat{
    
    :}

El siguiente es un análisis de la expresión expr = '<(\ w +). ?>. ? </ \ 1>' ;: La
primera parte: '<(\ w +)' coincide con el corchete de ángulo izquierdo (<), seguido por una o más letras, números o caracteres de subrayado. El paréntesis cerrado captura el carácter de símbolo después del corchete de ángulo izquierdo.
La segunda parte: '. ?>. ?' Coincide con el resto de la etiqueta HTML (los caracteres hasta>) y cualquier carácter que pueda estar antes del siguiente corchete de ángulo izquierdo.
La última parte: '</ \ 1>' coincide con todos los caracteres de la etiqueta HTML al final. Esta etiqueta consta de una secuencia, donde etiqueta representa cualquier carácter capturado como texto de etiqueta.

Eslogan en texto alternativo

regexprep('Norma Jean Baker', '(\w+\s\w+)\s(\w+)', '$2, $1')

Cuando utilice etiquetas en el texto alternativo, utilice símbolos como $ 1, $ 2, etc., en lugar de utilizar símbolos como \ 1, \ 2 para referirse a las etiquetas. Este ejemplo captura dos tokens e invierte su orden. El primer token $ 1 es 'Norma Jean' y el segundo token $ 2 es 'Baker'. Tenga en cuenta que regexprep devuelve el texto modificado, no un vector de índices iniciales

Supongo que te gusta

Origin blog.csdn.net/qq_36320710/article/details/112257088
Recomendado
Clasificación