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

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 *


Type number two as digit *


Semhle vyplňte číslici dvě. Předchozí antispemové pole nefunguje úplně dokonale, zdá se, že jsou i spamery, které pochopily, že je občas potřeba vyplnit autora :-)

Email


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

Attachments