La prima ^
è l'inizio della linea.
il secondo è un carattere letterale di ^
(\
è sfuggire l'altro significato usuale di ^
)
Il terzo è dire
una classe di caratteri che non comprende la carattere ^
Alcuni esempi per mostrare con rubino:
ruby-1.9.2-p0 > "hello" =~ /^h/ # it found a match at position 0
=> 0
ruby-1.9.2-p0 > "hello" =~ /^e/ # nil means can't find it
=> nil
ruby-1.9.2-p0 > "he^llo" =~ /\^/ # found at position 2
=> 2
ruby-1.9.2-p0 > "he^llo"[/[^^]*/] # anything repeatedly but not including the^character
=> "he"
fonte
2010-11-03 11:48:22
Sarebbe molto più chiaro se hai postato l'espressione regolare reale, non la stringa Java con le sue bbaacckkssllllaasshheesses dolorose e talvolta ingannevoli. – tchrist
@tchrist - perché? ha detto che ** questa ** sequenza di personaggi gli è stata data in un'intervista, un'intervista relativa a Java, immagino, guardando il tag. (BTW - il tag regex è stato aggiunto da qualcun altro, originariamente era etichettato solo Java) –
@Andreas_D, odio ammettere quante volte ho rovinato una regex di Java a causa del problema del backslash. Ora li leggo da un file di oggetti o come argomento da linea di comando per (cercare di) di evitare il problema. Anche così, c'è una grande differenza tra un letterale Java usato come regex e un'espressione regolare. È come combattere con il guscio, ma peggio. – tchrist