usar test regulares regular online net expresiones example como regex regex-negation pmd

test - regex vb.net example



La cadena de coincidencia RegExp no comienza con mi (4)

¿No sería mucho más legible hacer una coincidencia positiva y rechazar esas cadenas, en lugar de hacer coincidir lo negativo para encontrar cadenas para aceptar?

/^my/

Para PMD me gustaría tener una regla que me advierta de esas feas variables que comienzan con mi. Esto significa que tengo que aceptar todas las variables que NO comienzan con mi.

Entonces, necesito un RegEx (re) que se comporte de la siguiente manera:

re.match(''myVar'') == false re.match(''manager'') == true re.match(''thisIsMyVar'') == true re.match(''myOtherVar'') == false re.match(''stuff'') == true

He intentado con otros (los mencionaré aquí más tarde, lo siento, no tengo acceso a ellos en este momento) pero todavía no lo tengo funcionando.


Puede usar una afirmación de anticipación como otros han sugerido. O, si solo quieres usar la sintaxis básica de expresiones regulares:

^(.?$|[^m].+|m[^y].*)

Esto coincide con cadenas que tienen cero o un carácter de longitud ( ^.?$ ) Y, por lo tanto, no pueden ser my . O cadenas con dos o más caracteres, donde cuando el primer carácter no es un m pueden seguir más caracteres ( ^[^m].+ ); o si el primer carácter es un m no debe ir seguido de y ( ^m[^y] ).


/^(?!my).*/

(?!expression) es un lookahead negativo; coincide con una posición donde la expression no coincide comenzando en esa posición.


^(?!my)/w+$

Deberia trabajar.

Primero se asegura de que no sea posible hacer coincidir my al principio de la cadena, y luego compara caracteres alfanuméricos hasta el final de la cadena. El espacio en blanco en cualquier lugar de la cadena hará que la expresión regular falle. Dependiendo de su entrada, es posible que desee quitar el espacio en blanco en la parte frontal y posterior de la cadena antes de pasarlo a la expresión regular, o usar agregar contiendas de espacios en blanco opcionales a la expresión regular como ^/s*(?!my)(/w+)/s*$ . En este caso, la referencia inversa 1 contendrá el nombre de la variable.

Y si necesita asegurarse de que su nombre de variable comience con un cierto grupo de caracteres, digamos [A-Za-z_] , use

^(?!my)[A-Za-z_]/w*$

Tenga en cuenta el cambio de + a * .