Onko regexpille vastaava merkkijono-ottelu?
On helmikuu 17, 2021 by adminHaluaisin kirjoittaa jotain tällaista paitsi vertailla aluetta regexp: ään.
(if (string-match (buffer-substring-no-properties (point) (mark)) "foo") (bar))
Onko regexp-merkkijonolle vastaavaa merkkijonovastaavaa, jota voin käyttää näin?
(if (regexp-match (buffer-substring-no-properties (point) (mark)) "^[A-Z]") (bar))
niin, että se palauttaa arvon true, jos valittu alue on ”Apple” ja nolla, jos se on ”omena”?
Kommentit
Vastaa
Vastauksen vuoksi:
string-match
on tarkoitettu käytettäväksi regexps: n kanssa.
(merkkijono-ottelu REGEXP STRING & valinnainen KÄYNNISTYS)
Palauttaa REGEXP: n ensimmäisen ottelun alkuindeksin STRING: ssä tai ei nollaa. Hakutoiminto jättää kirjainkoon huomiotta, jos tapauskertainen haku ei ole nolla. Jos kolmas argumentti START ei ole nolla, aloita haku hakemistosta STRING. Jos kyseessä on ensimmäisen merkin otteluiden ulkopuolella oleva merkki, tee (ottelun loppu 0). ottelun loppu ja ottelun alku antavat myös indeksit alaotsikoista, jotka on sovitettu kaavaan sulakekonstrukttien avulla.
Funktiolla match-string voit purkaa sulkujen rakenteiden mukaiset alijonot. REGEXP: ssä.
Tässä on esimerkkejä
(string-match "\\(dog\\|cat\\)" "There is a dog.") ;; => 11 (string-match "\\(dog\\|cat\\)" "There are two cats here." 0) ;; => 14 (string-match "\\(dog\\|cat\\)" "There are two cats here." 15) ;; => nil (string-match "\\(dog\\|cat\\)" "There are horses.") ;; => nil
Huomaa, että jos et aio käyttää match-data
-toimintoa käytön jälkeen string-match
, mieluummin käyttää string-match-p
, joka toimii samalla tavalla kuin string-match
, paitsi että se ei muuta match-data
kun suoritetaan.
Kuten muut ovat sanoneet, sinun tapauksessasi looking-at
olisi todennäköisesti parempi vaihtoehto joka tapauksessa.
(REGEXP: n tarkastelu)
Palaa t, jos pisteen jälkeen oleva teksti vastaa säännöllistä lauseketta REGEXP. Tämä toiminto muuttaa ottelutietoja, jotka ovat ”ottelun alku”, ”ottelun loppu” ja ”ottelutiedot”; tallenna ja palauta ottelutiedot, jos haluat säilyttää ne.
Kommentit
- Koska OP sai argumenttijärjestyksen väärin, olisi todennäköisesti hyvä näyttää esimerkkikatkelma, joka kutsuu
string-match
.
string-match
käyttää jo regexps (ii) let-bindcase-fold-search
-tapahtumaa puhelun ympärillä, jos haluat kirjainkoon (iii) käytälooking-at
tekstin sovittamiseksi kohdassa (iv) voit käyttääregion-beginning
jaregion-end
point
jamark
, jos jälkimmäinen on edellisen edessä (bonuspiste siitä, ettäuse-region-p
ei ole nolla)C-h f
kertoisi sinulle.