Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > RegEx pro extrakci čísla portu z ADSI LDAP a GC řetězce
září 11
RegEx pro extrakci čísla portu z ADSI LDAP a GC řetězce

Zrovna jsem potřeboval vyndat z nějakého ADSI connection string číslo portu, tedy pokud tam vůbec nějaké je. Na to je ideální RegEx (regulární výraz, regulare expression). V jazyce PowerShell se to krásně použije s operátorem -match a výsledky jsou potom v proměnné $matches.

ADSI connection string je něco jako například: LDAP://adlds2-external.gopas.virtual:33000/CN=externi-ucty,DC=gopas,DC=lds

K tomu se tedy dá použít následující "jednoduchý" regulární výraz, který doufám vystihuje všechny případy:

\A(?:LDAP|GC)://[a-zA-Z0-9-.]+:(\d+)(?:/\Z|\Z|/)

Poznámky k výrazu:

  • \A znamená začátek řetězce
  • \Z je konec řetězce
  • ?: je tam proto, aby nedával tuhle skupinu (group) do výsledku - non-caputring group, zatímco číslo portu chci mít právě jako capturing group
  • + je jedno, nebo více opakování předchozího elementu
  • | znamená nebo (or)
  • uvnitř DNS FQDN názvu může být pouze písmeno, číslo, nebo tečka a pomlčka (například podtržítko v DNS násvu nemůže být)
  • zbytek výrazu ignoruju, pokud tam je jakékoliv distinguishedName, tak mě to nezajímá

Což mě přivádí k otázce, jak by vypadal RegEx na mečnutí distinguishedName.

Comments

Re: RegEx pro extrakci čísla portu z ADSI LDAP a GC řetězce

pro úplnost bych dodal, že PowerShell operátor -match hledá case-insensitive. Pokud chcete hledat case-sensitive, potřebujete operátor -cmatch
ondass on 11.9.2013 15:46

Add Comment

Sorry comments are disable due to the constant load of spam *


Omlouvám se, ale příval spamu nelze kontrolovat, takže mi prosím pošlete email, pokud máte nějaký dotaz, nebo připomínku.

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments