Estoy buscando hacer una búsqueda de reemplazo con expresiones regulares en Sublime Text 2. La documentación sobre esto es bastante anémica. Específicamente, quiero hacer un reemplazo en grupos, así que algo como convertir este texto:
Hello my name is bob
Y este término de búsqueda:
Encontrar que: my name is (\w)+
Reemplazar con: my name used to be $(1)
El término de búsqueda funciona bien, pero no puedo encontrar una manera de hacer un reemplazo usando el grupo regexp.
fuente
$0
?\0
es igual al carácter nulo y\0ddd
se usa como escape para un carácter con punto de código ddd). Sin embargo,$0
parece que se usa en Sublime2 como una "marca de salida" de acuerdo con esta página (aunque tengo problemas para encontrar suficientes ejemplos para determinar exactamente cómo se usa una marca de salida en Sublime2).$0
se usa en Sublime Text 2/3 para colocar el cursor en la salida de una expansión de fragmentos. Más sobre fragmentos .$0
es toda la coincidencia de expresiones regulares;$1
Es el primer grupo de captura.Por cierto, en la pregunta anterior:
Por:
Encuentra parte:
Con pieza de repuesto:
Volvería:
Cambiar buscar parte a:
Y reemplazar será lo que esperas:
Si bien (\ w) + coincidirá con "bob", no es la agrupación que desea reemplazar.
fuente
Si bien la respuesta anterior es correcta, ¡hay algo importante que enfatizar! Todos los segmentos coincidentes en su cadena de búsqueda que desea usar en su cadena de reemplazo deben estar encerrados entre
( )
paréntesis , de lo contrario, estos segmentos coincidentes no serán accesibles para variables definidas como$1
,$2
o\1
,\2
etc.Por ejemplo, queremos reemplazar 'em' con 'px' pero preservar los valores de los dígitos:
margin: $1px
omargin: \1px
margin: ([0-9]*)em
// con paréntesismargin: [0-9]*em
EJEMPLO DE CASO CORRECTO: Uso de
margin: ([0-9]*)em
cadena de búsqueda (con paréntesis). Incluya el segmento coincidente deseado (p. Ej.$1
O\1
) entre( )
paréntesis de la siguiente manera:margin: ([0-9]*)em
(entre paréntesis)margin: $1px
omargin: \1px
EJEMPLO DE CASO INCORRECTO: Usar una
margin: [0-9]*em
cadena de búsqueda (sin paréntesis). El siguiente patrón de expresiones regulares coincidirá con las líneas deseadas, pero los segmentos coincidentes no estarán disponibles en la cadena reemplazada como variables como$1
o\1
:margin: [0-9]*em
(sin paréntesis)margin: $1px
omargin: \1px
fuente
Aquí hay una presentación visual de la respuesta aprobada.
fuente
$_SESSION[(\w+)
? graciasTenga en cuenta que si usa más de 9 grupos de captura, debe usar la sintaxis
${10}
.$10
o\10
o\{10}
será no trabajar.fuente
1
al segundo grupo de captura, necesita usar llaves como${2}1
; $ 21 se refiere al grupo de captura 21, que no existe.Al mirar el artículo de Sublime Text Noofficial Documentation sobre Buscar y reemplazar , parece que
+(.+)
es el grupo de captura que puede desear ... pero yo personalmente lo utilicé(.*)
y funcionó bien. Para REEMPLAZAR de la manera que usted dice, puede que le guste esta conversación en los foros , específicamente esta publicación que dice simplemente usar$1
para usar el primer grupo capturado.Y como las imágenes son mejores que las palabras ...
Antes de:
Después:
fuente