Avatar billede nute Nybegynder
15. maj 2003 - 15:10 Der er 9 kommentarer og
2 løsninger

find specifik substring

jeg har følgende streng(e):

111_enSelect_nogetTekst_select

Ud fra denne streng vil jeg meget gerne have 3 substrings:

111, enSelect_nogetTekst og _select

Jeg har problemer med at hive ud "enSelect_nogetTekst" fra min string. Hvordan kan jeg gøre dette uden at hive ud "_select" i samme operation ? Mit RegExp ser sådan ud i pseudo kode:

/^(\d+)_(alle tegn men IKKE '_select')(_select)/gi

nogle forslag ?

/nute
Avatar billede Slettet bruger
15. maj 2003 - 15:12 #1
/^(\d+)_((.|\n)+)(_select)/gi
Avatar billede erikjacobsen Ekspert
15. maj 2003 - 15:12 #2
Hvad er det der er fast?

  ddd_mmmmmmmmmmmmmmmmmmmm_cccccc

hvor mmmmm-erne kan indeholde _ men ccccc ikke kan, og ddd er cifre?
Avatar billede nute Nybegynder
15. maj 2003 - 15:21 #3
regin >> nope ... den holder ikke

erikjacobsen >> mmm-erne kan indeholde *alt* af tegn, men *ikke* strengen "_select". ccc-erne skal være select. Så hvis vi skriver om dit "udtryk":

ddd_mmmmmmmmm_select

hvor
ddd = tal
mmm = alle mulige tegn ( tilsvarende .+ ) men *ikke* "_select"
_select = er optional i min streng. Hvis den er der, skal den hives ud, hvis den ikke er der, så skal jeg selvfølgelig ikke gøre noget med den

/nute
Avatar billede erikjacobsen Ekspert
15. maj 2003 - 15:25 #4
/^(\d+)_(.+)(_select)?$/gi
Avatar billede nute Nybegynder
15. maj 2003 - 15:28 #5
erik >> nej ...

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
var objRegExp = /^(\d+)_(.+)(_select)?$/gi
var str = "410_minSelect_select";
var arr = objRegExp.exec( str );
alert( arr[2] );
//-->
</SCRIPT>

min alert giver her "minSelect_select". Den skal give "minSelect". Hvis jeg havde lavet en ny alert: alert( arr[3] );¨, så skulle denne ha givet "_select"

U c ?
Avatar billede erikjacobsen Ekspert
15. maj 2003 - 15:36 #6
var objRegExp = /^(\d+)_(.+?)(_select)?$/gi
Avatar billede nute Nybegynder
15. maj 2003 - 15:58 #7
AHH !!!! der var den ... men ... ".+?" ??? Den må du *meget* gerne forklare. "match ethvert tegn 1 eller flere gange 0 eller en gang" ?!?! :-o

smid et svar

/nute
Avatar billede erikjacobsen Ekspert
15. maj 2003 - 19:02 #8
Jah, hvis du lover at regin får flest point....jeg er ikke grådig.

.+ er "grådig", greedy, så den matcher så meget som overhovedet
muligt. Når så (_select)? er optional på grund af ?-tegnet, så
kan du jo matche det streng med. Men en .+? er li'som en .+ bare
ikke grådig. Den stopper altså lige for _select, for, ja, grådig er
den ikke.
Avatar billede nute Nybegynder
16. maj 2003 - 12:46 #9
jow ... jeg kan da godt dele ud i ratio 2:1, hvis det er ønskelig :-)

bare i smider et svar begge to, så ...
Avatar billede Slettet bruger
16. maj 2003 - 14:35 #10
Ok, så smider jeg da et svar...
Avatar billede erikjacobsen Ekspert
16. maj 2003 - 21:22 #11
;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester