Regular Expressions 101

Save & Manage Regex

  • Current Version: 1
  • Save & Share
  • Community Library

Flavor

  • PCRE2 (PHP)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java
  • .NET 7.0 (C#)
  • Rust
  • PCRE (Legacy)
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests
Sponsors
There are currently no sponsors. Become a sponsor today!
An explanation of your regex will be automatically generated as you type.
Detailed match information will be displayed here automatically.
  • All Tokens
  • Common Tokens
  • General Tokens
  • Anchors
  • Meta Sequences
  • Quantifiers
  • Group Constructs
  • Character Classes
  • Flags/Modifiers
  • Substitution
  • A single character of: a, b or c
    [abc]
  • A character except: a, b or c
    [^abc]
  • A character in the range: a-z
    [a-z]
  • A character not in the range: a-z
    [^a-z]
  • A character in the range: a-z or A-Z
    [a-zA-Z]
  • Any single character
    .
  • Alternate - match either a or b
    a|b
  • Any whitespace character
    \s
  • Any non-whitespace character
    \S
  • Any digit
    \d
  • Any non-digit
    \D
  • Any word character
    \w
  • Any non-word character
    \W
  • Non-capturing group
    (?:...)
  • Capturing group
    (...)
  • Zero or one of a
    a?
  • Zero or more of a
    a*
  • One or more of a
    a+
  • Exactly 3 of a
    a{3}
  • 3 or more of a
    a{3,}
  • Between 3 and 6 of a
    a{3,6}
  • Start of string
    ^
  • End of string
    $
  • A word boundary
    \b
  • Non-word boundary
    \B

Regular Expression
Processing...

Test String

Code Generator

Generated Code

#include <StringConstants.au3> ; to declare the Constants of StringRegExp #include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate Local $sRegex = "(?m)Actua como el mejor programador del mundo en SAS y dime con ejemplos sobre mi propio programa como podria usar la fucnion intck o cualquier otra si quiero calcular las horas que pasan desde que una operacion entra por sistema, hasta que se financia. Y teniendo en cuenta que de 14:00 a 15:00 no tiene que computarse ya que son horas de descanso (solo queremos contar las horas de trabajo) y que si una operacion transcurre en uno de los 5 sabados que se trabaja al año los cuales tengo en una tabla temporal (sabadosCurrar), cuente esas horas tambien, en el resto de sabados, domingos y festivos, que no los cuente, que tambien estarán en otra tabla en work (fiestas)" Local $sString = "Entiendo, necesitas ajustar la macro para que considere los campos fecha_recibido y fecha_financiado, además de los días festivos almacenados en dos tablas diferentes: sabadosFESTIVOS y FIESTA. La macro deberá sumar horas solo para días laborables y los sábados especiales, excluyendo los días festivos que no son sábados." & @CRLF & _ "" & @CRLF & _ "Voy a modificar el código para incluir estas condiciones:" & @CRLF & _ "" & @CRLF & _ "sas" & @CRLF & _ "Copy code" & @CRLF & _ "%macro calcularHorasTrabajo(fechaRecibido, fechaFinanciado, sabadosFestivos, fiesta);" & @CRLF & _ " %let diasLaborables = 0;" & @CRLF & _ " %let diasSabadosEspeciales = 0;" & @CRLF & _ " %let horasTrabajo = 0;" & @CRLF & _ "" & @CRLF & _ " %let fechaActual = &fechaRecibido;" & @CRLF & _ "" & @CRLF & _ " %do %until (%sysfunc(intnx(day, &fechaActual, 1, s)) > &fechaFinanciado);" & @CRLF & _ " %let diaSemana = %sysfunc(weekday(&fechaActual));" & @CRLF & _ " %let esFestivo = %sysfunc(lookupn(&fechaActual, &fiesta)) ne .;" & @CRLF & _ "" & @CRLF & _ " /* No contar días festivos */" & @CRLF & _ " %if &esFestivo %then %do;" & @CRLF & _ " /* No hacer nada si es día festivo */" & @CRLF & _ " %end;" & @CRLF & _ " %else %do;" & @CRLF & _ " /* Contar como día laborable si no es sábado ni domingo */" & @CRLF & _ " %if &diaSemana ne 1 and &diaSemana ne 7 %then %do;" & @CRLF & _ " %let diasLaborables = %eval(&diasLaborables + 1);" & @CRLF & _ " %end;" & @CRLF & _ " /* Verificar si es un sábado especial */" & @CRLF & _ " %else %if &diaSemana eq 7 and %sysfunc(lookupn(&fechaActual, &sabadosFestivos)) ne . %then %do;" & @CRLF & _ " %let diasSabadosEspeciales = %eval(&diasSabadosEspeciales + 1);" & @CRLF & _ " %end;" & @CRLF & _ " %end;" & @CRLF & _ "" & @CRLF & _ " %let fechaActual = %sysfunc(intnx(day, &fechaActual, 1, s));" & @CRLF & _ " %end;" & @CRLF & _ "" & @CRLF & _ " %let horasTrabajo = %eval((&diasLaborables * 8) + (&diasSabadosEspeciales * 5));" & @CRLF & _ "" & @CRLF & _ " &horasTrabajo" & @CRLF & _ "%mend calcularHorasTrabajo;" & @CRLF & _ "Uso de la Macro" & @CRLF & _ "Para usar esta macro y calcular las horas trabajadas entre fecha_recibido y fecha_financiado para cada persona, considerando los sábados especiales y los días festivos, puedes hacer lo siguiente:" & @CRLF & _ "" & @CRLF & _ "sas" & @CRLF & _ "Copy code" & @CRLF & _ "data horas_trabajadas;" & @CRLF & _ " set tu_tabla_personas; /* Reemplaza con el nombre de tu tabla de personas */" & @CRLF & _ " horas = %calcularHorasTrabajo(fecha_recibido, fecha_financiado, work.sabadosFESTIVOS, work.FIESTA);" & @CRLF & _ "run;" & @CRLF & _ "Este código asume que tienes una tabla de personas con las columnas fecha_recibido y fecha_financiado. La macro se aplica a cada fila de esta tabla para calcular las horas trabajadas, excluyendo los días festivos y considerando los sábados especiales." & @CRLF & _ "" & @CRLF & _ "Notas Finales" & @CRLF & _ "Asegúrate de que las fechas en tus tablas estén en un formato consistente y que SAS pueda interpretarlas correctamente." & @CRLF & _ "Esta macro utiliza las funciones lookupn y intnx de SAS, asegúrate de que las tablas sabadosFESTIVOS y FIESTA estén estructuradas de tal manera que estas funciones puedan encontrar correctamente los días festivos y los sábados especiales." & @CRLF & _ "Como siempre, es importante probar la macro con diferentes conjuntos de datos para asegurarse de que los cálculos sean correctos en tu contexto específico." & @CRLF & _ "User" & @CRLF & _ "para ejecutar este codigo que tipo de datos tienen que ser las tablas sabadosfestivos y fiesta? como tendria que incluirlo en sas si no las tengo lncluidas ya para saber el formato quqe tienen que tenre para ejecutar la macro que me ha pasado" & @CRLF & _ "ChatGPT" & @CRLF & _ "Para ejecutar correctamente la macro que te proporcioné, las tablas sabadosFESTIVOS y FIESTA deben estar formateadas de una manera específica. Aquí te detallo el tipo de datos que deben tener y cómo podrías incluirlas en SAS:" & @CRLF & _ "" & @CRLF & _ "Formato de las Tablas sabadosFESTIVOS y FIESTA" & @CRLF & _ "Tablas de Días Festivos (sabadosFESTIVOS y FIESTA):" & @CRLF & _ "Deben contener al menos una columna que almacene las fechas de los días festivos." & @CRLF & _ "El formato de la fecha debe ser un formato de fecha reconocido por SAS (por ejemplo, DATE9.)." & @CRLF & _ "Idealmente, estas tablas deben tener una sola columna y cada fila representa un día festivo diferente." & @CRLF & _ "Ejemplo de Cómo Crear estas Tablas en SAS" & @CRLF & _ "Si aún no tienes estas tablas en tu entorno SAS, aquí tienes un ejemplo de cómo podrías crearlas manualmente:" & @CRLF & _ "" & @CRLF & _ "sas" & @CRLF & _ "Copy code" & @CRLF & _ "/* Crear tabla de sábados festivos */" & @CRLF & _ "data work.sabadosFESTIVOS;" & @CRLF & _ " format fecha DATE9.;" & @CRLF & _ " input fecha :DATE9.;" & @CRLF & _ " datalines;" & @CRLF & _ "20240106" & @CRLF & _ "20240203" & @CRLF & _ "20240303" & @CRLF & _ "20240407" & @CRLF & _ "20240505" & @CRLF & _ ";" & @CRLF & _ "run;" & @CRLF & _ "" & @CRLF & _ "/* Crear tabla de otros días festivos */" & @CRLF & _ "data work.FIESTA;" & @CRLF & _ " format fecha DATE9.;" & @CRLF & _ " input fecha :DATE9.;" & @CRLF & _ " datalines;" & @CRLF & _ "20240101" & @CRLF & _ "20240501" & @CRLF & _ "20241225" & @CRLF & _ ";" & @CRLF & _ "run;" Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH) Local $aFullArray[0] For $i = 0 To UBound($aArray) -1 _ArrayConcatenate($aFullArray, $aArray[$i]) Next $aArray = $aFullArray ; Present the entire match result _ArrayDisplay($aArray, "Result")

Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm