Van-e egyenértékű string-match a regexp számára?
On február 17, 2021 by adminSzeretnék ilyesmit írni, kivéve, ha összehasonlítom a régiót egy regexp-szel.
(if (string-match (buffer-substring-no-properties (point) (mark)) "foo") (bar))
Van-e egyenértékű string-match a regexp számára, amelyet így használhatok
(if (regexp-match (buffer-substring-no-properties (point) (mark)) "^[A-Z]") (bar))
úgy, hogy igaz legyen, ha a kiválasztott régió “Alma” és nem, ha “alma”?
Megjegyzések
Válasz
A válasz kedvéért:
string-match
a regexps-szel való használatra szolgál.
(string-match REGEXP STRING & opcionális START)
Visszatérési index a REGEXP első meccsének kezdetétől STRING-ben, vagy nulla. Az egyezés figyelmen kívül hagyja az eseteket, ha a „case-fold-search” nem nulla. Ha a harmadik arg START nem nulla, indítsa el a keresést az indexen a STRING-ben. A mérkőzésen túli első karakter indexéhez tegye a következőket (match-end 0). A match-end és a match-begin indexeket ad a mintában zárójeles konstrukciókkal illesztett alszövegek indexeiről is.
A match-string függvénnyel kivonhatja a zárójeles konstrukciókkal illesztett részeket a REGEXP-ben.
Íme néhány példa
(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
Ne feledje, hogy ha nem tervezi a match-data
használatát a string-match
használata után, akkor inkább használja a string-match-p
szolgáltatást, amely ugyanúgy működik, mint a string-match
, kivéve, hogy nem módosítja a match-data
amikor fut.
Amint azt mások mondták, az Ön esetében a looking-at
valószínűleg mindenképpen jobb választás lenne.
(REGEXP nézése)
Adja vissza a t értéket, ha a szöveg a pont után megegyezik a REGEXP reguláris kifejezéssel. Ez a függvény módosítja azokat az egyezési adatokat, amelyek elérik a „mérkőzés kezdete”, a „mérkőzés vége” és a „mérkőzés adatai” hozzáférést; mentse és állítsa vissza az egyezési adatokat, ha meg akarja őrizni őket.
Megjegyzések
- Tekintettel arra, hogy az OP tévesen kapta meg az argumentum sorrendet, valószínűleg jó ötlet lenne bemutatni egy példa kódrészletet, amelynek neve:
string-match
.
string-match
már használja a regexps (ii) let-bindcase-fold-search
-t a hívás körüli nullázáshoz, ha kis- és nagybetűkre van szükség (iii) használja alooking-at
a (iv) pontban található szöveg egyezéséhez használhatja aregion-beginning
ésregion-end
elemeket apoint
ésmark
abban az esetben, ha ez utóbbi az előbbi előtt áll (bónuszpont annak biztosításáért, hogy ause-region-p
nem nulla)C-h f
megmondaná.