Te pongo un breve ejemplo:
Tienes esta cadena de texto:
Tienes esta expresión regular:
Cada pareja de paréntesis representa un grupo, cada grupo es una especie de delimitador de captura, y a la expresión debes añadirle otra pareja de paréntesis imaginaria de esta manera: "
((.+)(\,)(\s+)(.+)(\!))" que representa el primer grupo de todos (es decir la captura completa), por ende:
Grupo 0: "Hola, Mundo!"
Grupo 1: "Hola"
Grupo 2: ","
Grupo 3: " "
Grupo 4: "Mundo"
Grupo 5: "!"
Conociendo lo que hemos capturado, los grupos de los que consta la captura, el índice de los grupos, y dando por hecho que se utilice el símbolo "
$" para interpretar un grupo, entonces solo debemos inercambiar los grupos en el orden deseado, por ejemplo, la unión de los grupos
"$4$2$3$1$5" o también
"Mundo, $1!" darían cómo resultado:
El programa o lenguaje que estés utilizando debe tener funcionalidades de reemplazado (o replace) cómo te ha comentado el compañero
Engel Lex.
Cabe mencionar que existen diferencias de sintaxis del motor Regex puede dependiendo del lenguaje en el que se utilice, por ejemplo te puedes encontrar que los grupos se representan con un símbolo/sintaxis diferente en otro lenguaje de scripting,
además de eso, en lenguajes orientados a objetos, el manejo de los grupos se suele hacer mediante el uso de miembros (classes y propiedades), en lugar de interpretar símbolos cómo "$0".
Lee las documentación de la Wikipedia, que muy pocas fuentes superan esta información:
Regular expression - Wikipedia, the free encyclopedia Por último, te muestro un ejemplo en VB.Net (en C# sería lo mismo):
Imports System.Text.RegularExpressions
Public NotInheritable Class Form1
Dim input As String = "Hola, Mundo!"
Dim format As String
Dim replace As String
Dim regEx As New Regex("(.+)(\,)(\s+)(.+)(\!)", RegexOptions.IgnoreCase)
Private Sub Test() Handles MyBase.Shown
Dim matches As MatchCollection = regEx.Matches(input)
Dim value1 As String = matches(0).Groups(1).Value ' "Hola"
Dim value2 As String = matches(0).Groups(2).Value ' ","
Dim value3 As String = matches(0).Groups(3).Value ' " "
Dim value4 As String = matches(0).Groups(4).Value ' "Mundo"
Dim value5 As String = matches(0).Groups(5).Value ' "!"
format = String.Format("{0}{1}{2}{3}{4}",
value4, value2, value3, value1, value5)
replace = input.Replace(value1, value4).
Replace(value3 & value4, value3 & value1)
End Sub
End Class
Saludos