/ / Regex matching *, à e? - java, regex, pattern-matching, espressione

Corrispondenza Regex *, à e? - java, regex, pattern matching, espressione

Regex il più difficile per me. Ho bisogno della regex per sotto in Java

1) 17-08-15 11.04A &AD4 USFR EN 00*

My TRY:d[1-9]+-d[1-9]+-d[1-9]+s+d[1-9].d[1-9]+w+s+&+w+ds+w+s+w+s+d+

& e * >> È il primo problema e se esiste una regex migliore per quella sopra, suggerisci.

2)17-08-15 11.04A &AD4 USER 0002******** j? j? à?&AD4N

PROBLEMA>> ******* e?, &, `come includerli in regex.

Ho cercato su Google molto ma sono disponibili solo regex semplici. E gli strumenti stanno generando tutti i regex di tipo costante che prendono le stringhe come in reg ex come

16-09-14s+11.04As+&AD4s+USERs+ENs+00

Contiene tutto così com'è, quindi questo tipo di regex non mi è utile.

Grazie

risposte:

1 per risposta № 1

Per cercare alcuni caratteri speciali (come & e *) devi scappare inserendo di fronte: *, &.

1) Il tuo regex è sbagliato. Per quanto ho capito, il primo gruppo rappresenta la data, quindi il tuo regex funzionerà anche per tale data: 32-99-15. Lo stesso vale per il tempo. Puoi verificarlo qui: https://regex101.com/r/tX1iD9/2

Ecco la regex per la parte di data e ora fino alla e commerciale 17-08-15 11.04A:

(0[1-9]|[12]d|30)-(0[1-9]|1[0-2])-[0-9]{2}s(0d|1[1-2]).([0-5]d){1,2}(A|P)s&

Supporta 12 ore di tempo con A o P alla fine e alla data corretta, puoi provarlo qui: https://regex101.com/r/mF9dQ9/3

E per l'intera stringa puoi trovare regex qui: https://regex101.com/r/mF9dQ9/4

2) Regex per il secondo:

(0[1-9]|[12]d|30)-(0[1-9]|1[0-2])-[0-9]{2}s+(0d|1[1-2]).([0-5]d){1,2}(A|P)s&[A-Z]{2}ds+[A-Z]{4}s+(d|*){12}sw?sw?sà?&w{2}dw

https://regex101.com/r/eT8eY6/1