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

137
Views
Estado diferente del grupo de cadenas Regex

en este caso, creo una expresión regular para el grupo en código, precio, nombre, estado, pero la última línea no coincide, quiero la última línea con el estado Y si no hay una palabra [Y]

 Harga: X25=2.335NAME1 25 [X]; X1=5.720NAME2 5 [Y]; X2=10.720NAME3 10 [Y]; X4=4.200NAME4 4;
 (?<code>.*)\=(?<price>[0-9]{1,3}\.?[0-9]{1,3})(?<name>.*)\s(?:\[(?<status>X|Y)\])
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Puede cambiar el primer .* a una clase de carácter negado que coincida con cualquier carácter excepto =

El grupo de nombres se puede cambiar a una clase de carácter negado que coincida con cualquier carácter que no sea [ y ]

El uso de [0-9]{1,3}\.?[0-9]{1,3} coincide con al menos 2 dígitos. Si también desea hacer coincidir un solo dígito, puede hacer que el . y los siguientes 1-3 dígitos opcionales

La última parte se puede hacer opcional, incluido el carácter de espacio en blanco para que coincida también con la última línea

 (?<code>[^=\n]*)=(?<price>[0-9]{1,3}(?:\.[0-9]{1,3})?)(?<name>[^\][]*?)(?:\s*\[(?<status>[XY])\])?;

El patrón coincide:

  • (?<code>[^=\n]*)= El código de grupo coincide con los caracteres opcionales que no sean = , luego coincide con =
  • (?<price> Precio de grupo
    • [0-9]{1,3}(?:\.[0-9]{1,3})? Haga coincidir 1-3 dígitos y, opcionalmente . y 1-3 dígitos
  • ) Cerrar grupo
  • (?<name>[^\][]*?) Nombre del grupo, opcionalmente, haga coincidir cualquier carácter excepto [ y ] lo menos posible
  • (?: grupo de no captura para hacer que toda la parte sea opcional
    • \s*\[(?<status>[XY])\] Opcionalmente haga coincidir los caracteres de espacio en blanco, el estado del grupo coincida con X o Y usando una clase de carácter entre corchetes
  • )?; Cierre el grupo de no captura y haga coincidir el ; al final

Demostración de expresiones regulares

Si el ; al final no es obligatorio, pero tampoco puede ocurrir en el medio, puede excluir la coincidencia como en esta demostración de expresiones regulares .

 const regex = /(?<code>[^=\n]*)=(?<price>[0-9]{1,3}(?:\.[0-9]{1,3})?)(?<name>[^\][]*?)(?:\s*\[(?<status>[XY])\])?;/g; const str = `Harga: X25=2.335NAME1 25 [X]; X1=5.720NAME2 5 [Y]; X2=10.720NAME3 10 [Y]; X4=4.200NAME4 4;`; let m; console.log([...str.matchAll(regex)].map(m => m.groups));

about 4 years ago · Juan Pablo Isaza 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!