[Java] Regex voor ldap DN string

Pagina: 1
Acties:

  • Ansur
  • Registratie: Januari 2004
  • Laatst online: 29-10 13:35
Ik zou uit een String die ik naar ldap wil sturen, de key/value pairs, met behulp van een regex, willen extracten om hier wat checks op te doen.

Vb. voor de input string "uid=an,sur,ou=admin,o=domain1,o=domain2" zou ik dan "uid=an,sur", "ou=admin", "o=domain1", "o=domain2" moeten krijgen.

In principe is hier de separator dus gewoonweg een komma, maar zoals je in het voorbeeld kan zien zit er in de value voor uid een komma.
Wat je ook kan opmerken is dat dit een ongeldig character is (RFC 2253). Het is dan ook net de bedoeling van deze extraction dat ik nadat ik die key/value pairs heb, ik deze invalid chars kan escapen vooraleer ik ze naar ldap stuur.

Ik zie precies niet goed in hoe ik ervoor kan zorgen dat de regex tot de laatste komma gaat die vóór een volgende '=' komt. Het lijkt me dat ik dan altijd al te ver ga lezen.

Vb. met de regex
Java:
1
"([a-zA-Z0-9]++)=[.[^=]]++"
geeft een Matcher me de resultaten "uid=an,sur,ou" en "o=group1,o". Naast het feit dat er dus informatie verloren gaat, zit de Matcher dus ook al te ver in de string.

Ik zoek dus (denk ik) naar een manier om te zeggen dat hij pakweg bovenstaande regex gebruikt, maar dan hiervan nog een stuk gaat excluden (tot de eerstgevonden komma, vanachter te beginnen).

Zit ik op een fout spoor, of is dit mogelijk?

  • Mr. Bondt
  • Registratie: Februari 2005
  • Laatst online: 16:46
Na een beetje experimenteren in Regexbuddy, ben ik op deze regex terechtgekomen:

Java:
1
"([a-zA-Z0-9]+)=.+?(?=(,[a-zA-Z0-9]+)=.+?|\\z)"


Dit matcht hij:
Afbeeldingslocatie: http://tweakers.net/ext/f/b5e5c2bcbec43870bb2ebe9188c37f8f/thumb.jpg

Hij kijkt vooruit, naar of er hij dezelfde regex nog een keer kan matchen, of dat het het einde van de regel is.

[ Voor 69% gewijzigd door Mr. Bondt op 08-11-2006 17:12 ]


  • Ansur
  • Registratie: Januari 2004
  • Laatst online: 29-10 13:35
Prachtig, inderdaad hetgeen ik zocht! Had nog niet gehoord van die \z.

Cheers :>