Hogyan szedek ki Javascriptben reguláris kifejezéssel, 2 meghatározott karakter közti részt?
Egy szövegből szeretném kivenni azokat a részeket, melyek szögletes zárójelben vannak, úgy, hogy a szögletes zárójel karaktereket ne tartalmazza az eredmény.
//pl
let szoveg = "Ez egy [szoveg] melyben [szogletes zarojelben] levo reszek is [vannak]."
Arra rájöttem, hogy az illeszkedési minta végén (?=\]) azt nézi, hogy követi-e a keresett szöveget egy bezár szögletes zárójel, de nem lesz benne az eredménybe, ám ugyanezt az elejével nem tudtam kivitelezni.
A válaszokat előre is köszönöm.
Amiután kiírtam a kérdést, még keresgéltem egy kicsit, és rátaltáltam az eddigi legbővebb leírásra, amit eddig láttam ebben a témában Javascript vonatkozásában, és "követ" mellett itt már szépen taglalja a "megelőz" lehetőséget is, így már ki tudtam szedni az alábbi reguláris kifejezéssel a szögletes zárójelben levő részeket.
szoveg.match(/(?<=\[)[\w\s]+(?=\])/g);
a leírás pedig a [link]
Viszont, ha valaki tud ennél jobb, szebb megoldást, kérem ne tartsa magában :) Hadd tanuljak! :)
Köszönöm!
Szerintem ez a pattern egyszerubb, raadasul a te kodod a zarojeleket adja vissza nem a bezart szoveget:
/\[([\w\s]+)\]/g
Ezen az oldalon egyszeruen tesztelheted a patterneket, es sok segitseget is ad, hogy melyik kifejezes mit csinal, mit takar:
Kedves #4
Nagyon szépen köszönöm a linket! Hasznos link. Viszont sajnos nincs benne Javascript koncepció. A böngésző konzoljában próbáltam ki a fenti kódot, nevezetesen a szoveg.match(/(?<=\[)[\w\s]+(?=\])/g); kifejezést, és nem a zárójeleket adta vissza, hanem a benne levő szövegeket. Letesztelheted. F12-es billentyű bármelyik modern böngészőben, és már mehet is a teszt.
Szóval nekem konkrétan Javascript String.match függvényében kellett jól működjön. Azt még nem értettem meg, hogy match esetében mit tudok kezdeni a csoportosítással, hiszen a visszatérési értéke mindig egy sima array match esetében. Ha elnevezem a csoportot, akkor sem találok a visszatérési értékekben eredmeny.groups.csoportneve lehetőséget, ahogy azt a dokumentációkban olvasom. Akkor meg minek?! viszont string.replace esetében, a csoportokat lehet hasznosítani $1, $2..., $n behelyettesítésekkel a stringben. És sajnos nem találok komoly és használható erre vonatkozó javascript tananyagot. Vagyis hogy lehet javascriptben is olyan szépen hasznosítani a csoportokat, mint mondjuk php-ban. ott a kerekzárójeles részek külön-külön megjelennek az eredménytömben. javascriptben, egy összefüggésként jelenik meg a matches-ben mint illeszkedési minta. Szóval hogy hasznosítom a csoportokat?
És kedves 4. nem Javasript esetében valószínű, hogy igazad van, hogy az általam felírt kifejezés nem azt adja vissza, ami nekem kell. Viszont javascriptben igen. Mitél van ez a külömbség?
Kedves #4
Linkelem, hogy mi lett az eredménye, az általad küldött reguláris kifejezésnek.
let szoveg = "Ez egy [szoveg] melyben [szogletes zarojelben] levo reszek is [vannak].";
szoveg.match(/\[([\w\s]+)\]/g);
//-> Array(3) [ "[szoveg]", "[szogletes zarojelben]", "[vannak]" ]
Tehát vissz adta a zárójeleket is.
Kedves #4
Most, hogy megnéztem az általad küldött mintát, és próbáltam értelmezni, látom azt a koncepciót, amit alapján gondolkodtál! Tehát készítettél egy illeszkedési mintát, melyben csoportosítottad azt, amire nekem van szükség! És a kimenet, egy array kéne legyen, amiben a kerek zárójelben levő részek vannak csupán. Ez nagyon tetszik és szép. Viszont miért nem így működik a match?! Miért kellett én kiszenvedjem (minimális hozzáértéssel) azt a verziót, ami végül jó eredményt adott?!
Jobban meg kell nézzem a match függvényt. Lenne valami plusz opcionális paramétere, amivel beállíthatom, hogy hogy működjön a reguláris kifejezés benne?!
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!