regex - probar - ¿Lista de todas las implementaciones de expresiones regulares?
probar expresiones regulares (4)
¿Hay una lista de implementaciones de Regex en la web que muestre sus diferencias / similitudes?
Por ejemplo, Emacs elisp Regex es diferente a JavaScript o Perl regex, por no mencionar las diferentes implementaciones utilizadas por los diferentes editores,
por ejemplo, VS2010 usa {}
lugar de ()
para agrupar expresiones para referencias anteriores.
Una vez pude confiar en una lista de conversión Regex en la Referencia rápida de bolsillo Regex de O''Reilly, pero algo en línea sería mucho más fácil y completo.
Por cierto, soy consciente de (por supuesto) http://www.regular-expressions.info/ que es bueno, pero no está casi completo.
Voy a compilar una lista de las respuestas publicadas aquí, y cualquier otra cosa que pueda encontrar.
Variaciones
Variaciones generales
Las diferencias en las implementaciones suelen ser la forma en que se manejan los caracteres especiales {}()[]^$
(reglas de escape, etc.) y, en ocasiones, se sustituyen; el manejo / disponibilidad de las clases de caracteres POSIX, por ejemplo, [:digit:]
, y el uso de opciones, por ejemplo, g
i
etc.
(un trabajo en progreso, si conoce alguna advertencia, diferencias para estas implementaciones, agréguelas como respuesta)
- ActionScript - utiliza el estilo ECMA
- Delphi (.Net) - Usa el estilo .Net. Delphi Win32 no tiene expresiones regulares nativas, pero hay envoltorios de PCRE disponibles.
- Emacs / ELisp: tiene 2 contextos diferentes, usos de escape
//
en elisp y/
enregexp-replace
. Los caracteres especiales(){}[]
se escapan cuando se usan para funciones de expresiones regulares, comosed
. - Eclipse - La búsqueda utiliza expresiones regulares de estilo Java.
- GNU (Linux) - POSIX BRE / ERE
- Grep - POSIX BRE / ERE
- Groovy - Utiliza el estilo de Java.
- IntelliJ
- Java - Estilo Java.
- JavaScript - utiliza el estilo ECMA.
- NetBeans
- .NET: utiliza las clases en System.Text.RegularExpressions
- Bloc de notas ++ - PCRE
- PCRE (C / C ++): biblioteca de código abierto, utilizada por muchos idiomas y aplicaciones de terceros. (por ejemplo, PHP, TCL, R, etc.)
- Perl - Perl estilo
- PHP - POSIX ERE, PCRE, (el módulo de cadena multibyte de PHP5 usa Oniguruma)
- POSIX - BRE (Regex básico), ERE (Regex extendido)
- PowerShell - estilo .Net
- Python - Estilo Python
- R - POSIX ERE / BRE, PCRE
- REALbasic - PCRE
- Ruby - Oniguruma
- Sed: los caracteres especiales
(){}[]
se escapan cuando se usan para funciones de expresiones regulares. - Tcl - Tres sabores, Tcl ARE (regex avanzada), POSIX ERE, POSIX BRE.
- TextMate - Oniguruma
- Término de Tera - Oniguruma
- VBScript - ECMA
- Visual Basic 6 - ECMA (cuando se usa el objeto COM de Microsoft VBScript Regular Expressions 5.5)
- Visual Studio - Las llaves de agrupación son
{}
(más detalles a continuación). - wxWidgets - Tcl ARE, POSIX BRE / ERE
- Esquema XML - XML
- XQuery & XPath - Xpath
Referencias adicionales.
Eche un vistazo a la Comparación de Sabor de Expresión Regular en http://www.regular-expressions.info/ . Contiene al menos las implementaciones de expresiones regulares más importantes de la actualidad y sus características.
Encontré esta descripción muy útil cuando me confundo con las diferentes variantes.
Hay una lista de bibliotecas, idiomas y aplicaciones compatibles con expresiones regulares en Wikipedia que incluye una tabla de comparación de características:
http://en.wikipedia.org/wiki/Comparison_of_regular_expression_engines
http://www.regular-expressions.info/ es lo más cercano que conozco a una lista exhaustiva (y ni siquiera está casi completa). ( Esta página en particular.)