Expresión regular para coincidir patrones especiales

ignición:

Estoy tratando de coincidir con una cadena como esta: 62.00|LQ+2*2,FP,MD*3 "Description"Cuando el valor decimal es 2 dígitos opcional, cada usuario se caracteriza por dos Caracteres y puede ser seguido por

(\ + [\ D] +)? o (\ * [\ d] +)? o ninguno, o ambos, o ambas cosas en un orden diferente

me gusta:

LQ * 2 + 4 | LQ + 4 * 2 | LQ * 2 | LQ + 8 | LQ

Descripción también es opcional

Lo que he intentado es la siguiente:

Pattern.compile("^(?<number>[\\d]+(\\.[\\d]{2})?)\\|(?<users>([A-Z]{2}){1}(((\\+[\\d]+)?(\\*[\\d]+)?)|((\\+[\\d]+)?(\\*[\\d]+)?))((,[A-Z]{2})(((\\+[\\d]+)?(\\*[\\d]+)?)|((\\+[\\d]+)?(\\*[\\d]+)?)))*)(\\s\\\"(?<message>.+)\\\")?$");

Tengo que conseguir por todos los usuarios para que pueda dividirlas por '', y luego de expresiones regulares aún más mi camino en it.But puedo deseado no agarrar cualquier cosa fuera de la salida de it.The

62.00 | LQ + 2 * 2, FP, MD * 3 "Descripción"

Debiera ser:

62.00

LQ + 2 * 2, FP, MD * 3

Descripción

entradas aceptadas deben ser de este tipo:

62.00 | LQ + 2 * 2, FP, MD * 3

30 | LQ "Hamburguesas"

35.15 | LQ * 2, FP + 2 * 4, MD * 3 + 4 "patatas"

35.15 | LQ, FP, MD

Pushpesh Kumar Rajwanshi:

La expresión regular precisa para que coincida con las entradas que has descrito debe ser cumplida por esta expresión regular,

^(\d+(?:\.\d{1,2})?)\|([a-zA-Z]{2}(?:(?:\+\d+(?:\*\d+)?)|(?:\*\d+(?:\+\d+)?))?(?:,[a-zA-Z]{2}(?:(?:\+\d+(?:\*\d+)?)|(?:\*\d+(?:\+\d+)?))?)*)(?: +(.+))?$

Donde el grupo 1 contendrá el número que puede tener decimales opcionales upto dos dígitos y grupo2 tendrán la coma entradas separado como usted la describe en su puesto y group3 contendrá la descripción opcional si está presente.

Explicación de expresiones regulares:

  • ^ - Comienzo de la cadena
  • (\d+(?:\.\d{1,2})?) - Hace coincidir el número que puede tener opcional 2 dígitos después decimal y lo captura en grupo1
  • \|- Hace coincidir literal |presente en su entrada después del número
  • ([a-zA-Z]{2}(?:(?:\+\d+(?:\*\d+)?)|(?:\*\d+(?:\+\d+)?))?(?:,[a-zA-Z]{2}(?:(?:\+\d+(?:\*\d+)?)|(?:\*\d+(?:\+\d+)?))?)*)- Esta parte coincide con dos letras seguidas de cualquier combinación de +seguido de un número y, opcionalmente, después de haber *seguido por número o *seguido de un número y, opcionalmente, después de haber +seguido por número exactamente una vez o toda de él que es opcional y lo captura en grupo2
  • (?: +(.+))? - Esto coincide con la descripción opcional y lo captura en group3
  • $ - Marcas final de la entrada

demostración de expresiones regulares

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=204156&siteId=1
Recomendado
Clasificación