Diseño de expresiones regulares multilínea

Tengo una expresión regular: Regex("((group1)(group2))(group3)")

Me gustaría formatearlo de una manera que se vea bien y clara, es decir:

 ( (group1) (group2) ) (group3) 

Por ejemplo, he intentado esto:

 Regex("(" + "(group1)" + "(group2)" + ")" + "(group3)") //--> loses the syntax highlighting in Intellij and a bit messy Regex("""( (group1) (group2) ) (group3)""") //--> not bad, but not equivalent (adds spaces and \n characters) 

¿Hay alguna manera de tener un layout limpio manteniendo la expresión regular equivalente al original y el resaltado de la syntax?

Parece que todavía puedes usar el modificador COMMENTS (o (?x) versión en línea):

 Regex("""(?x)( # Group 1 (group1) # Group 2 (group2) # Group 3 ) (group3) # Another group""" 

Ver la reference RegexOption :

Permite el espacio en blanco y los comentarios en el patrón.

Los símbolos # deben escapingse si denotan un símbolo literal # en el patrón.

Tenga en count que los espacios literales también se consideran formatear espacios en blanco, incluso dentro de las classs de caracteres. Escápelos si necesita hacer coincidir un espacio literal: """(?x)free\ spacing""" o """(?x)[a-zA-Z\ ]+""" .

  • Cómo hacer que la expresión regular termine en la primera oportunidad. (Kotlin)
  • Error en la validation de la expresión regular de la matrícula del automobile
  • Regex: coincide con palabras que no son cadenas
  • groupValues ​​solo devuelve la última aparición de patrón repetitivo