I have sql file with Thousands of SQL inserts, like this:
INSERT INTO `wpxl_posts` (`ID`, `post_author`, `post_date`, `post_content`, `post_title`, `post_status`, `post_name`, `post_modified`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES
(67439, 1, '2014-05-16 18:05:11', '<p>\r\n Punta Arenas. 17 mayo 2014. Un detallada exposición de lo que será el sistema de tronaduras para remover la capa esteril o superficial de la Mina Invierno, realizó ayer el gerente de Sustentabilidad y Gestión de la empresa carbonífera, Patricio Alvarado. El ejecutivo indicó que las vibraciones de las explosiones no serán perceptibles fuera del yacimiento y que por un lapso de 2 segundos el ruido que emitirá será como el de una persona gritando o una calle con alto tránsito.</p>\r\n<p>\r\n Alvarado también indicó que este procedimiento está regulado por el Sernageomin y por Carabineros y que se utiliza poco explosivo el que es mezclado con diesel, componentes que se evaporan tras la explosición. Estiman, una vez que se obtenga la autorización, realizar hasta tres tronaduras a la semana.</p>\r\n<p>\r\n Consultado el Gerente Regional, Guillermo Hernández, sobre las razones por las que la empresa desea incorporar esta técnica, el ejecutivo explicó que al ir avanzando la explotación del rajo se encontraron con terreno algo más resistente al explorado originalmente y que por ello el rendimiento de la maquinaria que se utiliza para remover el esteril ha sido menor. La expectativa de los ejecutivos es que con las tornaduras se pueda ascelerar el proceso de retiro del esteril para posteriormente extraer el carbon utilizando las mismas técnicas que actualmente se usan.</p>\r\n<p>\r\n Sebastián Gil, Gerente General de Mina Invierno, dijo que la empresa mantuvo una reunión con el Servicio de Evaluación Ambiental (SEA), entre otros entes de Gobierno, "en la que les explicamos lo que la compañía quiere hacer". El ejecutivo dijo que la expectativa de la empresa es implementar esta técnica a partir del próximo año dado los tiempos de evaluación y respuestas que se deben realizar por parte del SEA y de Mina Invierno.</p>\r\n', 'Mina Invierno asegura que vibraciones de tronaduras no se sentirán fuera del yacimiento ', '', 'm-2', '2014-05-19 08:05:59', 0, ' ', 0, 'post', '', 0, 'fe9c3739.jpg'),
(69129, 1, '2014-08-30 13:08:03', '<p>\r\n a</p>\r\n', 'a', '', 'a-4', '2014-08-30 13:08:26', 0, ' ', 0, 'post', '', 0),
(13, 1, '2010-05-12 16:30:02', '<p style=\"text-align: justify;\"><img class=\"alignleft size-full wp-image-14\" style=\"border: black 2px solid;\" title=\"consorcio aeropuerto\" src=\"http://www.dialogosur.cl/wp-content/uploads/2010/05/noticia3.jpg\" alt=\"\" width=\"280\" height=\"282\" />A partir de hoy, el Consorcio Aeroportuario Magallanes administrará Aeropuerto Carlos Ibáñez del Campo, teniendo un acuerdo para la construcción y remodelación del Terminal con la empresa constructora Salfa.</p>\r\n<p style=\"text-align: justify;\">A poco más de un año en que comenzó el proceso de licitación del Aeropuerto Carlos Ibáñez del Campo, en el cual participaron 5 empresas, el Consorcio Aeroportuario Magallanes – filial de Agunsa- asume el control oficial del Terminal Aéreo de Punta Arenas.</p>\r\n<p style=\"text-align: justify;\">La concesión implicará la ejecución de todo el proyecto, así como la conservación de las obras y la explotación de los servicios aeronáuticos y no aeronáuticos conforme a lo establecido en las bases de licitación.</p>\r\n<p style=\"text-align: justify;\">Con una inversión de 13 millones de dólares, la nueva concesión contempla la ampliación de 6.240 m2 a 7.700 m2 en el mejoramiento del Terminal de Pasajeros, que en una primera etapa contempla nuevas oficinas para líneas aéreas, señalética y climatización, ente otras iniciativas. También se pretende construir una nueva Torre de Control, una planta de tratamiento de aguas servidas, se mejorará la actual infraestructura vial, la red de alcantarillado, aguas lluvias y la iluminación de Plataforma.</p>\r\n<p style=\"text-align: justify;\">Además la concesión contempla mejorar el área de servicios, ampliando la oferta del Terminal, dotándolo con mayores counters para compañías aéreas y la gestión de estacionamientos públicos y de custodia, transporte público, rent a car, servicios financieros y salones VIP, entre otros.</p>\r\n<p style=\"text-align: justify;\">Al respecto Luis Mancilla, Gerente General de Agunsa destacó la amplia experiencia que posee la empresa en la concesiones de terminales aéreos, recordando que actualmente son socios en SCL, empresa que administra el aeropuerto Arturo Merino Benítez de Santiago, el más grande del país, y además operadores del Aeropuerto de las islas de San Andrés y Providencia en Colombia.\r\n“Creemos –agregó Mansilla- que Agunsa tiene mucho que ofrecer al desarrollo aeroportuario de Magallanes, potenciando el tráfico de personas y carga, asociadas a las actividades productivas de la zona austral, tales como el turismo y la proyección antártica, entre otras.”</p>\r\n<p style=\"text-align: justify;\">Por su parte, el Gerente General de la Concesionaria, Andrés Schultz hizo hincapié en el alto grado de entendimiento que ha existido con los prestadores de servicios del anterior contrato, como así también, con la estabilidad laboral de los trabajadores de la concesionaria anterior. “Aunque el contrato no nos exige mantener a los mismos trabajadores, hemos considerado que las personas que se desempeñaban en este terminal cuentan con una experiencia valiosa y por ello la mayoría han mantenido sus empleos”, aseguró Schultz</p>\r\n<p style=\"text-align: justify;\">Según explica Luis Mansilla, haber presentado la mejor oferta para el Aeropuerto de Punta Arenas, y la adjudicación del Terminal, significa un nuevo desafío en la expansión de su red de prestaciones de servicios de transporte marítimo, aéreo y terrestre, que ofrece la compañía a lo largo de todo el país y a nivel mundial, obedeciendo a su política de diversificación de negocio, sobre todo en la Zona Austral de Chile.</p>\r\n<p style=\"text-align: justify;\">AGUNSA pertenece al Holding Empresas Navieras, Grupo que además de estar en el negocio del transporte puerta a puerta a nivel global, participando activamente en inversiones de infraestructura portuaria y aérea, servicios de cargas y pasajeros; representaciones de operadores de transporte, tanto marítimo como aéreo; equipos terrestres y a flote; almacenaje y distribución de productos y, en general, todo lo relacionado con el transporte y servicios de carga , tanto de importación, exportación y cabotaje.</p>', 'Consorcio Aeroportuario de Magallanes asume concesión de aeropuerto Carlos Ibáñez Del Campo', '1', 'consorcio-aeroportuario-de-magallanes-asume-concesion-de-aeropuerto-carlos-ibanez-del-campo', '2010-05-18 13:38:28', 0, 'http://www.dialogosur.cl/?p=13', 0, 'post', '', 0, NULL),
(18, 1, '2010-05-12 21:24:45', '<p style=\"text-align: justify;\"><img class=\"alignleft size-full wp-image-17\" title=\"ningun proyecto social suspendido\" src=\"http://www.dialogosur.cl/wp-content/uploads/2010/05/opinion2gde.jpg\" alt=\"\" width=\"280\" height=\"184\" />Tras reunión en La Moneda, el Vicepresidente garantizó a los municipios que presupuesto de 2010 será superior al de años anteriores.</p>\r\n<p style=\"text-align: justify;\">El Vicepresidente de la República Rodrigo Hinzpeter garantizó hoy a los municipios que los presupuestos regionales del año 2010 serán superiores a los de 2008 y 2009, esto en una clara señal de tranquilidad, luego que la Asociación Chilena de Municipalidades advirtiera una merma significativa en el presupuesto debido a los gastos por el terremoto y tsunami de febrero pasado.</p>\r\n<p style=\"text-align: justify;\">Hinzpeter se reunió con la mesa directiva de la asociación, encabezada por su titular el alcalde de la Granja, Claudio Arriagada, además de ediles de las zonas devastadas.</p>\r\n<p style=\"text-align: justify;\">\"Les hemos garantizado que durante 2010 los presupuestos regionales van a estar en el marco de lo que se había considerado, y en todo caso van a ser superiores al promedio de los presupuestos de los años 2008 y 2009, dijo el Vicepresidente y agregó que \"ningún proyecto regional va a ser suspendido, los proyectos que habían iniciado su ejecución van a continuar su marcha y es probable que algunos, sólo algunos, sufran una postergación, pero nuestro compromiso es apoyar a todos los gobiernos regionales en la ejecución de los proyectos\".</p>\r\n<p style=\"text-align: justify;\">Hinzpeter explicó que ya se ha entregado cerca de $50 mil millones para las regiones.</p>', 'Hinzpeter: \"ningún proyecto regional va a ser suspendido\"', '1', 'hinzpeter-ningun-proyecto-regional-va-a-ser-suspendido', '2010-05-12 21:51:00', 0, 'http://www.dialogosur.cl/?p=18', 0, 'post', '', 0, NULL),
(38, 1, '2010-05-13 18:11:04', '<p style=\"text-align: justify;\"><img class=\"alignleft size-full wp-image-39\" title=\"festival folklorico solidariza con victimas\" src=\"http://www.dialogosur.cl/wp-content/uploads/2010/05/noticia2.jpg\" alt=\"\" width=\"280\" height=\"271\" />La comisión organizadora del XXX Festival Folclórico en la Patagonia, presidida por el Municipio de Punta Arenas, realizó el lanzamiento de las bases del evento, que se llevará a cabo el 15, 16 y 17 de julio en el Gimnasio Fiscal.</p>\r\n<p style=\"text-align: justify;\">En esta oportunidad, el certamen será de carácter benéfico y todo lo recaudado irá en ayuda de los damnificados por el terremoto que afectó a las zonas centro y sur del país EL 27 de febrero.</p>\r\n<p style=\"text-align: justify;\">El presidente de la Comisión de Cultura del Consejo Municipal e integrante de la Comisión Organizadora, José Aguilante, se manifestó muy contento con el hecho de poder contar con el Gimnasio Fiscal para este evento tan importante, ya que el recinto permite albergar a una mayor cantidad de público.</p>\r\n<p style=\"text-align: justify;\">“Queremos agradecer a la gente de Chiledeportes, ya que si bien en un momento pensamos que no se iba a poder contar con este recinto porque iba a estar sometido a reparaciones, la buena voluntad del organismo permitió que se postergaran las obras para llevar adelante el evento”, señaló Aguilante.</p>\r\n<p style=\"text-align: justify;\">Hasta el momento ya son 27 los números que amenizarán las 3 jornadas, todos quienes han comprometido su actuación gratuita, por lo que los organizadores sólo deberán costear el traslado, alojamiento y alimentación de los artistas, cifra que ascenderá a cerca de 30 millones de pesos.</p>\r\n<p style=\"text-align: justify;\">Además, en lo que será su versión bicentenario, y como una manera de conmemorar los 30 años de realización del evento, se llevará a cabo un homenaje a las mejores 30 canciones que han marcado el Festival de la Patagonia.</p>\r\n<p style=\"text-align: justify;\">Respecto a la competencia, la comisión organizadora señaló que participarán de ella un total de 6 canciones, de las cuales 2 serán de nuestra región, 2 de origen extranjero y 2 del resto del país.</p>\r\n<p style=\"text-align: justify;\">En cuanto al costo de las entradas, el Vicepresidente de la Comisión Organizadora, Pedro Sánchez, señaló que “la idea es que éstas sirvan para aminorar los gastos en que se deba incurrir para la atención de los artistas, y personalmente velaré para que las mejores ubicaciones tengan un mayor valor de venta para el público”.</p>\r\n<p style=\"text-align: justify;\">Las inscripciones estarán abiertas hasta el 4 de junio ya que el 11 del mismo mes comenzará la preselección de los temas en competencia.</p>', 'Festival folclórico en la Patagonia solidariza con víctimas de terremoto', '1', 'festival-folclorico-en-la-patagonia-solidariza-con-victimas-de-terremoto', '2010-05-13 18:11:04', 0, 'http://www.dialogosur.cl/?p=38', 0, 'post', '', 1, NULL),
I need to remove the last field of each insert, last field can be one of this two options:
, 'fe9c3739.jpg'),
or
NULL),
I tried to use the search tool of notepad++ in order to replace the last field with an empty space.
I tried this way
But it doesn't work, How can i replace the last field with an empty space?
The file looks like an SQL command. In SQL, strings may contain double literal single quotes. So the safest regex here would be
,\h*(?:'[^']*(?:''[^']*)*'|NULL)\),$
Replace with \),.
Regex details
, - a comma
\h* - zero or more horizontal whitespaces
(?:''[^']*(?:''[^']*)*|NULL) - either of the two alternatives:
'[^']*(?:''[^']*)* - a single quote, then any 0 or more chars other than single quote, then 0 or more sequences of double single quote followed with 0 or more chars other than single quotes and then a single quote
\), - a closing parenthesis and a comma at the
$ - end of a line.
My guess is that this expression might likely work to get or almost collect our target inputs,
,\s*'[^\s]+\.jpg'\)|,\s*NULL\)
to be replaced with just a ).
Demo
In Notepad++ the parenthesis in the replace part have to be escaped.
Find what: ,[^,)]+\)
Replace with: \)
Or
Find what: ,[^,)]+(?=\))
Replace with: LEAVE EMPTY
Try this regex: ,{1}$
Example here: https://regex101.com/r/0G9spl/1
The last field on each line
Find (?m)(?:(?:^|,)\h*)(?:"([^"\\]*(?:\\.[^"\\]*)*)"|'([^'\\]*(?:\\.[^'\\]*)*)'|([^,\r\n]*))(?=\h*\)(?!.*\)))
Replace with empty string
https://regex101.com/r/vTvrCT/1
Explained
(?m) # Multi-line mode
(?: # leading comma + optional whitespaces
(?: ^ | , )
\h*
)
(?: # Cluster group, the last field on each line
"
( # (1 start), double quoted string data
[^"\\]*
(?: \\ . [^"\\]* )*
) # (1 end)
"
| # OR
'
( # (2 start), single quoted string data
[^'\\]*
(?: \\ . [^'\\]* )*
) # (2 end)
'
| # OR
( [^,\r\n]* ) # (3), non-quoted field
)
(?=
\h* \)
(?! .* \) )
)
As a PDF conversion of a table yelds:
8703.60.00 - Outros veículos, equipados para propulsão, simultaneamente, com um
motor de pistão alternativo de ignição por centelha (faísca*) e um
motor elétrico, suscetíveis de serem carregados por conexão a uma
fonte externa de energia elétrica 25
Ex 01 - De cilindrada não superior a 1.000 cm3 7
Ex 02 - De cilindrada superior a 1.000 cm3, mas não superior a 2.000
cm3 13
8703.70.00 - Outros veículos, equipados para propulsão, simultaneamente, com um
motor de pistão de ignição por compressão (diesel ou semidiesel) e
um motor elétrico, suscetíveis de serem carregados por conexão a
uma fonte externa de energia elétrica 25
8703.80.00 - Outros veículos, equipados unicamente com motor elétrico para
propulsão 25
8703.90.00 - Outros
I'm trying with this pattern:
/(\d{2,4}\.\d{1,2}|\d{2,4}\.\d{1,2}\.\d{1,2})\s{2,}(.*)/s
But I can't find a way to stop group evaluation (the last (.*) of regex pattern) and get all codes and descriptions.
In another way, if I remove /s from pattern, I got all codes, but descriptions came incomplete (Only return descriptions before first \n).
How can I get all codes and descriptions after new lines?
Follow my tests:
https://regex101.com/r/PdtQCf/1
How about this:
(\d{2,4}\.\d{1,2}|\d{2,4}\.\d{1,2}\.\d{1,2})\s{2,}(.*(?:\n(?!)\s{4,}.*)*)
It's your original regex, with the addition of checking for a linefeed followed by at least 4 (an arbitrary number to avoid page headers) space characters (except FF (i guess it is)) and then anything up to a linefeed. This last part can be repeated any number of times.
Here at regex101.
$string = <<<EOD
8703.60.00 - Outros veículos, equipados para propulsão, simultaneamente, com um
motor de pistão alternativo de ignição por centelha (faísca*) e um
motor elétrico, suscetíveis de serem carregados por conexão a uma
fonte externa de energia elétrica 25
Ex 01 - De cilindrada não superior a 1.000 cm3 7
Ex 02 - De cilindrada superior a 1.000 cm3, mas não superior a 2.000
cm3 13
8703.70.00 - Outros veículos, equipados para propulsão, simultaneamente, com um
motor de pistão de ignição por compressão (diesel ou semidiesel) e
um motor elétrico, suscetíveis de serem carregados por conexão a
uma fonte externa de energia elétrica 25
8703.80.00 - Outros veículos, equipados unicamente com motor elétrico para
propulsão 25
8703.90.00 - Outros
EOD;
preg_match_all('/(\d{2,4}\.\d{1,2}|\d{2,4}\.\d{1,2}\.\d{1,2})\s{2,}((?:.*?\R(?:\h+|$))*)/', $string, $match);
print_r($match);
Explanation:
/ : regex delimiter
( : start group #1
\d{2,4}\.\d{1,2}
|
\d{2,4}\.\d{1,2}\.\d{1,2}
) : end group #1
\s{2,} : 2 or more spaces
( : start group #2
(?: : start non capture group
.*? : 0 or more any character but newline
\R : any kind of linebreak
(?: : start non capture group
\h+ : 1 or more horizontal spaces
| : OR
$ : end of string
) : end group
)* : end group, 0 or more occurrences
) : end group #2
/ : regex delimiter. NO 's' modifier
Output:
Array
(
[0] => Array
(
[0] => 8703.60.00 - Outros veículos, equipados para propulsão, simultaneamente, com um
motor de pistão alternativo de ignição por centelha (faísca*) e um
motor elétrico, suscetíveis de serem carregados por conexão a uma
fonte externa de energia elétrica 25
Ex 01 - De cilindrada não superior a 1.000 cm3 7
Ex 02 - De cilindrada superior a 1.000 cm3, mas não superior a 2.000
[1] => 8703.70.00 - Outros veículos, equipados para propulsão, simultaneamente, com um
motor de pistão de ignição por compressão (diesel ou semidiesel) e
um motor elétrico, suscetíveis de serem carregados por conexão a
[2] => 8703.80.00 - Outros veículos, equipados unicamente com motor elétrico para
[3] => 8703.90.00 - Outros
)
[1] => Array
(
[0] => 8703.60.00
[1] => 8703.70.00
[2] => 8703.80.00
[3] => 8703.90.00
)
[2] => Array
(
[0] => - Outros veículos, equipados para propulsão, simultaneamente, com um
motor de pistão alternativo de ignição por centelha (faísca*) e um
motor elétrico, suscetíveis de serem carregados por conexão a uma
fonte externa de energia elétrica 25
Ex 01 - De cilindrada não superior a 1.000 cm3 7
Ex 02 - De cilindrada superior a 1.000 cm3, mas não superior a 2.000
[1] => - Outros veículos, equipados para propulsão, simultaneamente, com um
motor de pistão de ignição por compressão (diesel ou semidiesel) e
um motor elétrico, suscetíveis de serem carregados por conexão a
[2] => - Outros veículos, equipados unicamente com motor elétrico para
[3] => - Outros
)
)
This question already has answers here:
regex to match a single character that is anything but a space
(3 answers)
Closed 4 years ago.
I know this seems a duplicated question but I can't find what I need.
I want to make a TextView (Android) where each word is clickable, but I need to match every sequence of characters unless whitespaces, so something like "hello!" or "«tomorrow" or "días" are valid matches for me.
So I don't need the pattern to find whitespaces, because I don't want split.
My scenario is Android but I only need the regexp, I'm playing with http://regexr.com/ to test and one example text to test is:
Con cien cañones por banda, viento en popa a toda vela, no corta el
mar, sino vuela, un velero bergantín: bajel pirata que llaman por su
bravura el Temido, en todo mar conocido del uno al otro confín. La
luna en el mar riela, en la lona gime el viento, y alza en blando
movimiento olas de plata y azul; y ve el capitán pirata, cantando
alegre en la popa, Asia a un lado, al otro Europa y allá a su frente
Stambul. «Navega, velero mío, sin temor, que ni enemigo navío, ni
tormenta, ni bonanza, tu rumbo a torcer alcanza, ni a sujetar tu
valor. «Veinte presas hemos hecho a despecho del inglés, y han rendido
sus pendones cien naciones a mis pies. «¿Qué es mi barco? Mi tesoro.
¿Qué es mi Dios? La libertad. ¿Mi ley? ¡La fuerza y el viento! ¿Mi
única patria? ¡La mar! «Allá muevan feroz guerra ciegos reyes por un
palmo más de tierra: que yo tengo aquí por mío cuanto abarca el mar
bravío, a quien nadie impuso leyes. «Y no hay playa sea cual quiera,
ni bandera de esplendor, que no sienta mi derecho y dé pecho a mi
valor. «¿Qué es mi barco? Mi tesoro. ¿Qué es mi Dios? La libertad. ¿Mi
ley? ¡La fuerza y el viento! ¿Mi única patria? ¡La mar! «A la voz de
«¡barco viene!» Es de ver cómo vira y se previene a todo trapo a
escapar: que yo soy el rey del mar, y mi furia es de temer. «En las
presas yo divido lo cogido por igual: sólo quiero por riqueza la
belleza sin rival. «¿Qué es mi barco? Mi tesoro. ¿Qué es mi Dios? La
libertad. ¿Mi ley? ¡La fuerza y el viento! ¿Mi única patria? ¡La mar!
«¡Sentenciado estoy a muerte! Yo me río: no me abandone la suerte, y
al mismo que me condena, colgaré de alguna antena, quizá en su propio
navío. «Y si caigo, ¿qué es la vida? Por perdida ya la di cuando el
yugo del esclavo, como un bravo, sacudí. «¿Qué es mi barco? Mi tesoro.
¿Qué es mi Dios? La libertad. ¿Mi ley? ¡La fuerza y el viento! ¿Mi
única patria? ¡La mar! «Son mi música mejor aquilones; el estrépito y
temblor de los cables sacudidos, del negro mar los bramidos y el rugir
de mis cañones. «Y del trueno al son violento, y del viento al
rebramar, yo me duermo sosegado. Arrullado por el mar. «¿Qué es mi
barco? Mi tesoro. ¿Qué es mi Dios? La libertad. ¿Mi ley? ¡La fuerza y
el viento! ¿Mi única patria? ¡La mar!
You have almost answered your question by yourself.
"Every sequence of characters unless whitespaces" - it is exactly /([^\s])+/g
Strangely, the following string stops before the end:
#include <iostream>
#include <string>
using std::wcout;
using std::wstring;
int main()
{
wstring test = L"Os elfos compõem uma raça atlética e esguia, da mesma altura dos humanos. Eles apresentam a mesma variedade de compleições dos humanos, mas costumam ser mais bronzeados ou morenos. A cor típica do cabelo de um elfo é marrom escuro, ruivo escuro, verde musgo ou dourado escuro. As orelhas dos elfos são longas e pontiagudas, seus olhos são azuis, violetas ou verdes vibrantes. Esse povo tem poucos pêlos no corpo, mas prefere manter uma aparência selvagem e embaraçada nos cabelos.\nOs elfos atingem a maturidade na mesma velocidade que os humanos, mas demonstram pouquíssimos efeitos do envelhecimento depois da idade adulta. O primeiro sinal da idade avançada de um elfo geralmente é uma mudança na cor dos cabelos — muitas vezes ficando grisalhos, mas quase sempre escurecendo ou assumindo cores mais castanhas. A maioria dos elfos vive bem até os 200 anos de idade e permanecem vigorosos até o fim.";
wcout << test;
return 0;
}
Output:
Os elfos comp§em uma raþa atlÚtica e esguia, da mesma altura dos humanos. Eles apresentam a mesma variedade de compleiþ§es dos humanos, mas costumam ser mais bronzeados ou morenos. A cor tÝpica do cabelo de um elfo Ú marrom escuro, ruivo escuro, verde musgo ou dourado escuro. As orelhas dos elfos sÒo longas e pontiagudas, seus olhos sÒo azuis, violetas ou verdes vibrantes. Esse povo tem poucos pÛlos no corpo, mas prefere manter uma aparÛncia selvagem e embaraþada nos cabelos.
Os elfos atingem a maturidade na mesma velocidade que os humanos, mas demonstram pouquÝssimos efeitos do envelhecimento depois da idade adulta. O primeiro sinal da idade avanþada de um elfo geralmente Ú uma mudanþa na cor dos cabelos
Correct Ouput:
Os elfos comp§em uma raþa atlÚtica e esguia, da mesma altura dos humanos. Eles apresentam a mesma variedade de compleiþ§es dos humanos, mas costumam ser mais bronzeados ou morenos. A cor tÝpica do cabelo de um elfo Ú marrom escuro, ruivo escuro, verde musgo ou dourado escuro. As orelhas dos elfos sÒo longas e pontiagudas, seus olhos sÒo azuis, violetas ou verdes vibrantes. Esse povo tem poucos pÛlos no corpo, mas prefere manter uma aparÛncia selvagem e embaraþada nos cabelos.
Os elfos atingem a maturidade na mesma velocidade que os humanos, mas demonstram pouquÝssimos efeitos do envelhecimento depois da idade adulta. O primeiro sinal da idade avanþada de um elfo geralmente Ú uma mudanþa na cor dos cabelos — muitas vezes ficando grisalhos, mas quase sempre escurecendo ou assumindo cores mais castanhas. A maioria dos elfos vive bem até os 200 anos de idade e permanecem vigorosos até o fim.
It stops always on the same part "... cabelos".
What is happening?
If I divide the string in smaller chunks, it behaves properly. Is it the issue, string size?
I checked the characters around where it stops printing to see what they were in unicode.
Your hyphen is actually a unicode dash 0x2014.
This outputs a null to the stream and terminates the string.
When faced with a large amount of code, data, features, or changes it's best to put on blinkers and chop it down into into smaller pieces. Sometimes it's best to chop it in half, then half again, then again, until it's manageable. Other times, just strip down to nothing, then add in a little at a time.