VBA WORD How could I increment multilevel list number? - list

I'm looking for a code to modify list leveling number when I input a specific number on other Sub.
My other Sub reads a number from a paragraph and saves it to an integer.
Then, with that integer I'd need something to do this:
INPUT LIST:
1.5.BLABLABLA
1.5.1.BLIBLIBLI
(SOMEWHERE WILL BE A Paragraph with "14" Text, this to integer)
OUTPUT LIST:
14.5.BLABLABLA
14.5.1.BLIBLIBLI

Well, I'm working OK with this
Sub LimpiaTitulos()
'Normalizador de títulos de nivel determinado(3 en este caso)
ActiveDocument.Repaginate
If ActiveDocument.BuiltInDocumentProperties(wdPropertyPages) > 50 Then
If MsgBox("El documento tiene " & ActiveDocument.BuiltInDocumentProperties(wdPropertyPages) & _
" páginas." & vbCr & "Esta macro no esta pensada para tantas páginas y puede afectar" & vbCr _
& "al rendimiento general del ordenador." & vbCr & "¿Desea realmente ejecutarla?", vbYesNo + _
vbInformation, "Güornin!!!!!") = vbYes Then
GoTo Comienzo
Else
Exit Sub
End If
Else
Comienzo:
Dim ele As List, iTotalParas As Integer, iParacoutner As Integer, p As Paragraph, numeracion As String
iTotalParas = ActiveDocument.ListParagraphs.Count
'Dejamos el primer párrafo con texto, quitando retornos
Borraespacios
Set p = ActiveDocument.Paragraphs(1)
lvl = Int(p.Range.Text)
p.Range.Delete
Borraespacios
'Formato de título
'Formato de título
p.Range.Font.Size = 20
p.Range.Font.Bold = True
p.Range.Font.Italic = False
p.Range.Font.Name = "Arial"
p.OutlineLevel = wdOutlineLevel3
'-------------------------------------------------REGEX----------------------------------------------------
Dim lvl1 As New RegExp, lvl2 As New RegExp
'REGEX primer nivel
lvl1.Pattern = "[0-9]{1,}[.,][0-9]{1,}[.,][0-9]{1,}" 'Admite #.,#.,# - SUPONEMOS JAMAS HABRA #,.#,.#,.#
lvl1.Global = False
'REGEX segundo nivel
lvl2.Pattern = "[0-9]{1,}[.,][0-9]{1,}" 'Admite #.,#
lvl2.Global = False
'Si nos topamos con un nivel 2 de mas caracteres de los deseados, lo tragamos
'-----------------------------------------------FIN REGEX--------------------------------------------------
For iParaCounter = 1 To iTotalParas
' Cogemos el parrafo actual y lo tratamos
Set p = ActiveDocument.ListParagraphs(iParaCounter)
'Metemos el formato de la numeración en un String
numeracion = p.Range.ListFormat.ListString
'Si es de más de 2 carácteres
'If Len(numeracion) > 2 Then
'Filtramos la numeración con la REGEX
If lvl1.test(numeracion) Then
numeración = "1.1.1"
Else
If lvl2.test(numeracion) Then
numeracion = "1.1"
Else
GoTo Siguiente
End If
End If
If p.Range.ListParagraphs.Count = 1 Then
'Borramos el formato y aplicamos el nuevo
p.Range.Select
Selection.ClearFormatting
If Len(numeracion) <= 4 Then
'p.Range.SetListLevel Level:=2
p.OutlineLevel = wdOutlineLevel3
Else
'p.Range.SetListLevel Level:=3
p.OutlineLevel = 10
End If
'Aplicamos lista multinivel de números
p.Range.ListFormat.ApplyListTemplate ListTemplate:=ListGalleries(wdOutlineNumberGallery).ListTemplates(2), _
ContinuePreviousList:=True, ApplyTo:=wdListApplyToWholeList, DefaultListBehavior:=wdWord10ListBehavior
'Establecemos el numero del tema
p.Range.ListFormat.ListTemplate.ListLevels(1).StartAt = lvl
'Si el nivel de esquema es 3, aplicamos lista nivel 2
If p.OutlineLevel = 3 Then
p.Range.Font.Name = "Calibri"
p.Range.Font.Size = 14
p.Range.Font.Bold = True
p.Range.Font.Italic = False
'-----SOLO PARA TEST p.Range.Font.ColorIndex = wdBrightGreen
p.Range.SetListLevel Level:=2
'Si el nivel de esquema es 4, aplicamos lista nivel 3
Else
If p.OutlineLevel = 10 Then
p.Range.Font.Name = "Calibri"
p.Range.Font.Size = 12
p.Range.Font.Bold = False
p.Range.Font.Italic = False
'-----SOLO PARA TEST p.Range.Font.ColorIndex = wdBlue
p.Range.SetListLevel Level:=3
End If
End If
End If
'End If
Siguiente:
Next iParaCounter
End If
End Sub
With this, I read a document formatted with a number on the first paragraph and take it for using it as list number. Now I'm thinking, how could I control this in a document with many levels to use?

Related

How do I delete text between two characters in notepad++

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* \)
(?! .* \) )
)

regular expression to search text

I'm trying to get the text string that is between UBICADO and COMUNA
I am occupying the following regular expression " ((ubicado) =?).* " but I do not know how to arm it so that it takes up "comuna"
"departamento número veintidós del segundo piso, señalan, ubicado en calle Victoria Subercaseaux número ciento noventa y uno, Comuna de Santiago, Región Metropolitana, y demás derechos en los bienes comunes, en proporción al valor del mismo, entre los cuales se encuentra el terreno, que deslinda: NORTE, calle Valdivia; SUR, propiedad de doña Laura Zegers de"

How to manage signal 'draw' with Gtk.TextView() in python and display number lines?

Hi evrybody pythonist enthousiast
This code in order to show how to manage draw signal instead of "expose_event" used to in gtk2 and how to display line number if you want it
the difference between gtk2 and gtk3 is some little difficult to understand
#!/usr/bin/env python
# coding: utf-8
from gi.repository import Gtk,Gdk
from gi.repository import Pango
def recup_lignes(textbuffer,premier_y, dernier_y, coords_buffer, numeros):
# On recupere l'iterateur du premier y.
iter, top = textbuffer.get_line_at_y(premier_y)
# On recupere la position de chaque iterateur et on l'ajoute
# a la liste. On s'arrete apres dernier_y.
nombre,taille = 0,0
while not iter.is_end():
y, hauteur = textbuffer.get_line_yrange(iter)
coords_buffer.append(y)
num_ligne = iter.get_line()
numeros.append(num_ligne)
nombre += 1
# suite nouvelle étude je le remet
if (y + hauteur) >= dernier_y:
break
iter.forward_line()
return nombre
def on_text_view_draw(text_view, cairo_context):
text_buffer = text_view.get_buffer()
start,end = text_buffer.get_bounds()
text = text_buffer.get_text(start,end,False)
nlines = text.count("\n") + 1
#collect size of visible part of window
rectangle_visible = text_view.get_visible_rect()
premier_y = rectangle_visible.y
dernier_y = premier_y +rectangle_visible.height
# collect numeros & pixels to be display
numeros = []
pixels = []
nombre = recup_lignes(text_view,premier_y, dernier_y, pixels, numeros)
# Affichage de numéros internationalises !
layout = text_view.create_pango_layout("")
pos_horizontal = 2
for i in range(nombre):
x, pos = text_view.buffer_to_window_coords(Gtk.TextWindowType.RIGHT, 0, pixels[i])
chaine = "<span weight='bold' foreground='red'>%d </span>" % numeros[i]
layout.set_markup(chaine,len(chaine))
# met les numeros dans la zone texte
Gtk.render_layout(text_view.get_style_context(), cairo_context, pos_horizontal, pos, layout)
long_text = u"0 Your Answer\n\
1 Thanks for contributing an answer to Stack Overflow!\n\
2 Please be sure to answer the question. Provide details and share your research!\n\
3\n\
4 But avoid …\n\
5\n\
6 Asking for help, clarification, or responding to other answers.\n\
7 Making statements based on opinion; back them up with references or personal experience.\n\
8\n\
9To learn more, see our tips on writing great answers.\n\
10 Your Answer\n\
11Thanks for contributing an answer to Stack Overflow!\n\
12 Please be sure to answer the question. Provide details and share your research!\n\
13 \n\
14 But avoid …\n\
15\n\
16 Asking for help, clarification, or responding to other answers.\n\
17 Making statements based on opinion; back them up with references or personal experience.\n\
18 \n\
19 To learn more, see our tips on writing great answers.\n"
tooltip = u'textview avec numérotation de ligne\n\
<b>Warning</b> la numérotation ne fonctionne correctement que si on ne fait pas circuler le scrolling'
text_view = Gtk.TextView()
text_view.set_border_window_size(Gtk.TextWindowType.RIGHT, 54)
text_view.set_border_window_size(Gtk.TextWindowType.LEFT,54)
text_view.set_editable(True)
text_view.modify_base(Gtk.StateType.NORMAL, Gdk.color_parse('light green'))# non OK change marg like in gtk2
text_view.modify_bg(Gtk.StateType.NORMAL, Gdk.color_parse('orange'))#background text OK
text_view.modify_fg(Gtk.StateType.NORMAL, Gdk.color_parse('green'))# modifie la couleur du texte OK
text_view.modify_font( Pango.FontDescription('Arial normal 10'))# OK
text_view.set_tooltip_markup(tooltip)
text_view.connect("draw", on_text_view_draw)
text_buffer = text_view.get_buffer()
text_buffer.insert_at_cursor(long_text) #sympath pour inserer la où est le curseur mais pas nécessaire ici
#text_buffer.insert_markup(long_text)
scroller = Gtk.ScrolledWindow()
scroller.set_hexpand(True)
scroller.set_vexpand(True)
scroller.set_shadow_type(Gtk.ShadowType.IN)
scroller.add(text_view)
window = Gtk.Window()
window.connect("delete-event", Gtk.main_quit)
window.set_position(Gtk.WindowPosition.CENTER)
window.set_default_size(300, 200)
window.set_border_width(12)
window.add(scroller)
window.show_all()
demo = False
if demo:
for i in dir(Gtk.TextBuffer):
print i
Gtk.main()
The code is running ok now on python 2.7 and Gtk 3

RegExp pattern to find words [duplicate]

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

Function that modify text on lists push the last element out of the list

I have this procedure to add "<OK>" to red colored elements on a list, but it push the elements that are last of its lists
Sub Rojo()
Dim lista As Integer
Dim para As Paragraph
For Each para In ActiveDocument.ListParagraphs
If para.Range.Font.ColorIndex = wdRed Then
para.Range.Text = "<OK> " + para.Range.Text
End If
Next para
The if I have list:
black text
black text
Red Text
Red text
It becomes:
black text
black text
<OK>Red Text
Red text<--This is pushed out of the list
What shoudl I do?
Adde this and elements becomes listed again, but on a new list. Now I would need to push it into the former list. (Hecho is a global boolean)
Sub Rojo()
Dim p As Paragraph
Dim iTotalParas As Integer, iParaCounter As Integer
Comienzo:
If hecho = False Then
iTotalParas = ActiveDocument.Paragraphs.Count
For iParaCounter = 1 To iTotalParas
' For Each p In ActiveDocument.Paragraphs
Set p = ActiveDocument.Paragraphs(iParaCounter)
If p.Range.Font.ColorIndex = wdRed Then
'Mi cosecha
p.Range.Text = "<OK>" + p.Range.Text
If ActiveDocument.Paragraphs(iParaCounter).Range.ListFormat.ListType = 0 Then
ActiveDocument.Paragraphs(iParaCounter).Range.ListFormat.ApplyOutlineNumberDefault
End If
End If
' Next p
Next iParaCounter
hecho = True
'Si ya la hemos ejecutado y volvemos a usarla, avisa antes y controlamos la repetición
Else
If MsgBox("Ya has ejecutado esta macro boniato!" & Chr(13) & "¿Quieres ejecutarla de nuevo?", vbYesNo, "User Input") = vbYes Then
hecho = False
GoTo Comienzo
Else
hecho = True
End If
End If
End Sub
EDITED:::::::::========
Ok, the more I do with this, the more I learn. Ionly had to change p.Range.Text = "" + p.Range.Text to p.Range.InsertBefore("OK")