Regulární výraz   zodpovězená otázka

Regulární výrazy

Dobrý den,

pomohl by mi prosím někdo sestavit regulární výraz pro text:

x.x

x.x.x.x

x.x.x.x.x.x

x.x.x.x.x.x.x.x

........

kde x je číslo od 0 - 999

zacatek se da testovat jako:

"(^(?<zacatek>[0-9]\.|[0-9][0-9]\.|[0-9][0-9][0-9]\.))"

konec jako:

"((?<konec>\.[0-9]|\.[0-9][0-9]|\.[0-9][0-9][0-9])$)"

ale jak na střed textu kde se opakují čísla oddělená tečkami, může jich být libovolný sudý počet.

To zdali je počet čísel sudý bych mohl ověřit jinak později.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Možná tohle:

(?<number>\d{1,3})\.?

To by mělo najít jeden nebo více výskytů odpovídajícíh masce "#.", "##." a "###." a stejně tak bez tečky. Sudost pak ověříte přes Matches.Count.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Pokud chcete opravdu RV použít, tak doporučuji:

^\d{1,3}(\.\d{1,3})*$

String pak rozparsujte pomocí:

Dim casti() = "45.345.3.214.456".Split('.')

Tento příkaz Split rozdělí řetězec podle teček do pole. To můžete pak kontrolovat v jeho délce (casti.Length) a nebo jednotlivné segmenty převádět na čísla (Integer.Parse(casti(0))).

Rozhodně nedoporučuji snažit vše kontrolovat regulárním výrazem. Má pomoci při parsování, ne sloužit jako univerzální prostředek, který nahradí všechny ostatní metody. V tomto případě bych se možná přikláněl k nepoužití RV. Text podle teček rozparsujete, zkontrolujete délku pole na sudost hodnot a jednotlivé políčka zkusíte převést na číslo u kterého zkontrolujete rozsah 0-999.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback