Oggi mi sono imbattuto la seguente espressione regolare e voleva sapere cosa Rubino avrebbe fatto con esso:significato di un `+` a seguito di un `*`, quando quest'ultimo viene utilizzato come un quantificatore in un'espressione regolare
> "#a" =~ /^[\W].*+$/
=> 0
> "1a" =~ /^[\W].*+$/
=> nil
In questo caso, Ruby sembra ignorare il carattere +
. Se ciò non è corretto, non sono sicuro di cosa stia facendo. Immagino che non venga interpretato come un quantificatore, dal momento che lo *
non è stato scappato e viene utilizzato come quantificatore. In Perl/Ruby regex, a volte quando un carattere (ad es., -
) viene utilizzato in un contesto in cui non può essere interpretato come un carattere speciale, viene considerato letterale. Ma se ciò accadesse in questo caso, mi aspetterei che la prima corrispondenza fallisse, dal momento che non c'è lo +
nella stringa lvalue.
È un uso sottilmente corretto del carattere +
? Il comportamento sopra è un bug? Mi manca qualcosa di ovvio?
Dove ti sei imbattuto in questa espressione regolare? –
In alcuni contenuti di sicurezza di terze parti incontrati durante il mio lavoro. Immagino che la regex non sia ciò che l'autore intendeva, ma quando ho visto il comportamento di Ruby, ho iniziato ad avere domande su questa ipotesi. –