Kezdőoldal » Számítástechnika » Weblapkészítés » Regexp-ben hogy lehet opcionál...

Regexp-ben hogy lehet opcionálissá tenni egy csoportot? Próbáltam a kérdőjellel, de az a baj, hogy összevonta a két csoport értékét.

Figyelt kérdés

Ez a kiinduló példa

^parameters#([^\/]+)#([^\/]+)


parameters#p1#p2 esetén okés,de ha csak első paraméter van,akkor az nem oké,azaz úgy is mennie kéne,hogy

parameters#p1


Hogy tehetem meg,hogy a második opcionális legyen?

Próbáldam ? jelet használni a másodiknál,de akkor meg egy csoporba vonta össze az egészet.


2017. ápr. 27. 14:34
 1/7 anonim ***** válasza:

^parameters#([^\/]+)(#([^\/]+))?


gondolom ez kell neked

2017. ápr. 27. 14:57
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:

^parameters#([^\/]+)(?:#([^\/]+))?


próbáld ki itt: www.regexr[pont]com

2017. ápr. 27. 14:58
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

^parameters#([^\/]+)#([^\/]+)? -> elhagyhatom ugyan a p2 értékét,de a #-nek ott kell maradnia

^parameters#([^\/]+)(#([^\/]+))? -> összevonja a két paramétert, ha mindkettő meg van adva,ami nem jó.

2017. ápr. 27. 15:03
 4/7 A kérdező kommentje:
Bocs, megnézem amit írtatok,csak elnyomtam:)
2017. ápr. 27. 15:03
 5/7 A kérdező kommentje:

Sajna ugyanaz, ha jól értem a ?: az arra jó,hogy ne kreáljon erdemény csoportott,de amúgy hasonlóan viselkedjen.


Lehet valami feltételt is kell kötni hozzá,ahogy a regex doksit nézem.. na ez érdekes lesz:)

2017. ápr. 27. 15:23
 6/7 anonim ***** válasza:

pl.: aaa?

aa vagy aaa illik rá. A 3. "a" előfordulása 0x vagy 1x.


aaa* hasonló csak 0x-tól végelenig.

Jó: aa, aaa, aaaa, aaaaaa, aaaaaaaaaaaaaaaaaaaaaaa


aaa+ legalább 1x, tehát a fenti sokféleség közül csak az "aa" nem illik rá.


Minden jel csak is kizárólag a megelőzőre vonatkozik

ab?a tehát jó: aa, aba


Ha egy nagyobb csoportot akarsz befogni

(...)?-t kell alkalmaznod.

[^\/]+ minden olyan karakterre illik ami nem tartalmaz / karaktert. Tehát # is jó. Azaz


^parameters#([^\/]+)#([^\/]+) erre illik: parameters#### és ez is: parameters################################

mert ugyebár csak / karakter tiltott, de minden más végtelenségig mehet.


^parameters#([^\/]+)(#([^\/]+))? tehát a fenti válaszokra illik: parameters################################ szintúgy, mert az első ([^\/]+) lehetővé teszi parameters# önmagában nem jó, mert az első [^\/]+ követel karaktert. parameters## már ok, ahogy ez is jó: parameters#?


Az lenne a legjobb ha specifikálnád a kérdésed, mert így ezt a regexnek nem sok értelmét látom. Főleg, hogy a szeparátor karakter is engedélyezett a paraméterben, ami meg a feldolgozásba add egy kis nehézséget.

2017. ápr. 27. 16:19
Hasznos számodra ez a válasz?
 7/7 A kérdező kommentje:

Értem és és hasznos is részben,bár amit igazából kerestem és sikerült vele megoldanom,az a feltételes regexp.

Persze be kellett raknom a #-t is a tiltott karakterek közé.

^parameters#([\w][^#]+)(#)?(?(2)([\w][^#]+))

vagy

^parameters#([\w][^#]+)(?=#)(?:#([\w][^#]+))?


csodás:))

2017. ápr. 27. 22:57

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!