Con i limiti delle parole (\ b) in RegEx ho bisogno di averlo prima E dopo la parola, o poco prima?

Se voglio abbinare tutte le occorrenze della parola foo , utilizzerei \bfoo\b o senza l'ultimo? Sembra che funzionino entrambi, ma cosa è giusto?

Avresti bisogno di usare entrambi. Senza l'ultimo \b si otterrebbe una corrispondenza su stringhe come:

 "I love football" "You foolishly left off your second word boundary" 

Tuttavia, si noti che la definizione di word boundary \b si basa sulla definizione di \w : un limite di parola viene definito quando si trova tra un carattere non word e un carattere word, where il carattere word è definito da \w . \w per la string ASCII è equivalente a [A-Za-z0-9_] , quindi \bfoo\b rifiuta anche casi come:

 foo123
 3foo
 foo_bar
 fun_foo

Poiché le cifre e _ sono considerate carattere di parola, se sono proprio accanto a foo , non formsranno un limite di parole, quindi \bfoo\b non corrisponderà a nessuno dei precedenti.

Dato il seguente input:

 foo foobar 

Questa espressione regolare corrisponderà solo al primo foo :

 \bfoo\b 

Questa espressione regolare corrisponderà al primo ed anche al foo in foobar :

 \bfoo