15. maj 2003 - 15:10Der 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
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
<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"
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.
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.