/ / Regex c # s číslicami a medzerami - c #, .net, regex

Regex c # obsahujúci číslice a medzery - c #, .net, regex

Čo robí nasledujúci Regex?

    d{1,3}.?d{0,3}s[0-9a-zA-Z. -]{4,40}

Chápem, d je za číslicu, ale čo robí 1,3.

Ak niekto môže ďalej vysvetliť, že by to bolo ocenené

odpovede:

2 pre odpoveď č. 1

{n,m} je kvantifikátor, ktorý znamená "najmenej n krát, najviac m krát". Rovnako ako všetky kvantifikátory je štandardne chamtivý a pre dialekty regexu, ktoré ich podporujú, má tiež lenivé a vlastné verzie ({n,m}? a {n,m}+ - .NET podporuje bývalú, ale nie druhú, bohužiaľ).

ak n nie je špecifikované, je 0; ak m nie je zadané, je to nekonečno.

To znamená, že môžete "prepísať" klasickú *, + a ? pomocou tohto kvantifikátora:

  • * je {0,};
  • + je {1,};
  • ? je {0,1}.

(poznámka: Myslím, že . v .? bola určená ako doslovná bodka, čo znamená, že by sa mala utiecť, to znamená .?; bodka v regexe znamená "ľubovoľný znak", s výnimkou triedy znakov.)

Pokiaľ ide o samotný regex:

d{1,3}        # match a digit, one to three times, followed by
.?             # any character, 0 or one time (see my remark), followed by
d{0,3}        # a digit, zero to three times, followed by
s             # a space character, followed by
[0-9a-zA-Z. -] # a digit, or any letter, or a dot, or a space, or a hyphen,
{4,40}         # 4 to 40 times

Nakoniec je potrebné poznamenať, že d v jazykoch .NET sa neobmedzuje na 0-9, môže sa zhodovať s ďalšími číslicami Unicode.

upraviť: regex, opravený, berúc do úvahy komentár @AlanMoore, by bol:

d{1,3}(.d{1,3})?s[0-9a-zA-Z. -]{4,40}

Možno aj tento regex by mal byť ukotvený ... Ale to je len odhad.