it-swarm.it

Regex che corrisponde alle stringhe di inizio e fine

Sembra che dovrebbe essere banale, ma non sono così bravo con le espressioni regolari, e questo non sembra essere facile per Google.

Ho bisogno di una regex che inizia con la stringa 'dbo'. e termina con la stringa '_fn'

Per quanto mi riguarda, non mi interessa quali siano i caratteri tra queste due stringhe, purché l'inizio e la fine siano corretti.

Questo serve per abbinare le funzioni in un database del server SQL.

Per esempio:

dbo.functionName_fn - Match

dbo._fn_functionName - No Match

dbo.functionName_fn_blah - No Match
32
Eric Burcham

Se stai cercando hit in un testo più grande, non vuoi usare ^ e $ come hanno detto alcuni altri soccorritori; quelli corrispondono all'inizio e alla fine del testo. Prova questo invece:

\bdbo\.\w+_fn\b

\b è un limite di parola : corrisponde a una posizione preceduta da un carattere Word e non seguita da uno, oppure seguita da un carattere Word e non preceduta da uno. Questo regex troverà quello che stai cercando in una di queste stringhe:

dbo.functionName_fn
foo dbo.functionName_fn bar
(dbo.functionName_fn)

... ma non in questo:

foodbo.functionName_fnbar

\w+ corrisponde a uno o più "caratteri Word" (lettere, cifre o _). Se hai bisogno di qualcosa di più inclusivo, puoi provare \S+ (uno o più caratteri non bianchi) o .+? (uno o più caratteri qualsiasi, tranne l'avanzamento di riga, non avidamente). The non-greedy +? impedisce che corrisponda accidentalmente qualcosa come dbo.func1_fn dbo.func2_fn come se fosse solo un colpo.

27
Alan Moore
^dbo\..*_fn$

Questo dovrebbe funzionare te.

20
Daniel A. White

Bene, la semplice regex è questa:

/^dbo\..*_fn$/

Sarebbe meglio, tuttavia, utilizzare la funzionalità di manipolazione delle stringhe di qualsiasi linguaggio di programmazione che si sta utilizzando per tagliare i primi quattro e gli ultimi tre caratteri della stringa e verificare se sono ciò che si desidera.

6
lonesomeday
\bdbo\..*fn

Stavo esaminando una tonnellata di Java per una libreria specifica: car.csclh.server.isr.businesslogic.TypePlatform (anche se al momento conoscevo solo car e Platform). Sfortunatamente, nessuno degli altri suggerimenti qui ha funzionato per me, quindi ho pensato di postare questo.

Ecco la regex che ho usato per trovarlo:

\bcar\..*Platform
2
Travis Heeter