División de cadenas con delimitadores conservados
Cuando se trabaja con cadenas multilínea delimitadas por un conjunto de delimitadores únicos, puede resultar complicado dividir la cadena preservando al mismo tiempo los propios delimitadores. El método estándar String.split solo separa la cadena según el delimitador especificado, descartando los caracteres delimitadores.
Uso de Lookahead y Lookbehind
El kit de desarrollo de Java (JDK) proporciona una solución utilizando mirar hacia adelante y mirar hacia atrás, que son características de las expresiones regulares que le permiten hacer coincidir y capturar caracteres sin incluirlos en el resultado final. resultado.
Aquí hay un ejemplo que utiliza la búsqueda hacia adelante y hacia atrás:
String input = "(Text1)(DelimiterA)(Text2)(DelimiterC)(Text3)(DelimiterB)(Text4)";
String[] splitWithDelimiter = input.split("((?El patrón:
- (?
- (?=;) coincide con un carácter vacío directamente antes de un punto y coma (lookahead).
- ((?
Salida:
[Text1, ;, DelimiterA, ;, Text2, ;, DelimiterC, ;, Text3, ;, DelimiterB, ;, Text4]
Este resultado conserva los delimitadores junto con el texto, cumpliendo con el requisito de mantener los delimitadores intactos mientras se divide la cadena.
Mejora de la legibilidad
Las expresiones regulares a veces pueden resultar difíciles de leer y comprender. Para mejorar la legibilidad, puede crear una variable con un nombre descriptivo que represente el patrón de expresión regular. Por ejemplo:
static final String WITH_DELIMITER = "((?Al utilizar marcadores de posición y el formato String.de Java, puede hacer que la expresión regular sea más intuitiva y más fácil de interpretar.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3