Tratando de encontrar incrementos en cadenas como el propósito previsto (banca), etc.
Intento crear una expresión regular que coincida con 123456 ... y 123 456 ... .
Recibo las líneas de propósito previstas implosionadas sin espacio vacío. Entonces obtendré el incremento como FooBar 123456 Baz FooBar 123456Baz o FooBar123456Baz .
Los incrementos comienzan con 15 o 16. Ejemplos: 150000000001 160000000001 .
Lo que obtuve: (^\s*|[^0-9])((15|16)(?:\d\s?){10})([^0-9]|\s*$)
Pattern break down: # // Begin of string (perhaps empty spaces) OR no digit. (^\s*|[^0-9]) // Prefix "15" or "16" and 10 digits (perhaps empty spaces between). ((15|16)(?:\d\s?){10}) // Not following by digit OR (perhaps empty spaces between) end of string. ([^0-9]|\s*$) # El primer problema que tengo es que (?:\d\s?) siempre selecciona un espacio vacío después. El segundo problema es que mis intentos al principio y al final realmente no funcionan.
La parte principal es ((15|16)(?:\d\s?){10}) . Pero esto también continúa seleccionando después de los saltos de línea, lo que no debería hacer. Es por eso que trato de limitar las coincidencias con "no 0-9 O final|comienzo de línea".
Estoy probando esto en regex101.com
Ejemplos de lo que debe coincidir :
-- no empty space at start of line, and one or more spaces between, and none-number before|after 150000000001 150000000001 150000000001 150000000001 d 150000000001d 150000000001 d150000000001d -- empty space before and in between 150 000 000 001 15 00 00 00 00 01 --not a must tho 150000000001 -- just a string of the increment only 160000000001 -- just a string of the increment onlyEl problema de la nueva línea -
-- the new line problem Foo Bar160000000 001 Bazselecciona
160000000 001que no debe.
¿Cómo restringir adecuadamente el principio y el final?
Gracias por tu tiempo.
Puedes usar
/(?<!\d)1[56]\d(?:\h?\d){9}(?!\d)/La expresión regular coincide con:
(?<!\d) - un límite de dígitos a la izquierda, no se permite ningún dígito inmediatamente a la izquierda1 - un carácter 1[56] - 5 o 6 caracteres\d - cualquier dígito(?:\h?\d){9} - nueve apariciones de un espacio en blanco horizontal opcional y cualquier dígito(?!\d) - un límite de dígitos a la derecha, no se permite ningún dígito inmediatamente a la derecha.