Skip to content
Tiantan
Articles

Există un echivalent de string-match pentru regexp?

On februarie 17, 2021 by admin

Mi-ar plăcea să scriu așa ceva, cu excepția comparării regiunii cu o regexp.

(if (string-match (buffer-substring-no-properties (point) (mark)) "foo") (bar)) 

Există un echivalent de șir-potrivire pentru regexp pe care să îl pot folosi așa

(if (regexp-match (buffer-substring-no-properties (point) (mark)) "^[A-Z]") (bar)) 

astfel încât să revină adevărat dacă regiunea selectată este „Apple” și zero dacă este „măr”?

Comentarii

  • Câteva observații aleatorii: (i) string-match folosește deja regexps (ii) let-bind case-fold-search pentru a renunța la apelul dvs. dacă doriți sensibilitate la majuscule (iii) utilizați looking-at pentru potrivirea textului la punctul (iv) puteți utiliza region-beginning și region-end în loc de point și mark în cazul în care acesta din urmă este înaintea primului (punct bonus pentru a vă asigura că use-region-p nu este nul)
  • @YoungFrom Cred că articolul (i) se califică ca răspuns.
  • C-h f ți-ar spune.

Răspuns

Pentru un răspuns:

string-match este conceput pentru a fi utilizat cu regexps.

(string-match REGEXP STRING & opțional START)

Returnează indexul de începere a primei potriviri pentru REGEXP în STRING sau zero. Potrivirea ignoră majuscule dacă „case-fold-search” nu este nulă. Dacă al treilea argument START este diferit, începeți căutarea la acel index în STRING. Pentru indexul primelor caractere dincolo de meci, faceți (sfârșitul meciului 0). „meci-sfârșit” și „meci-început” oferă, de asemenea, indicii de șiruri potrivite cu structuri de paranteză în model.

Puteți utiliza funcția „potrivire-șir” pentru a extrage șirurile potrivite de construcțiile de paranteză. în REGEXP.

Iată câteva exemple

 (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  

Rețineți că dacă nu intenționați să utilizați match-data după ce utilizați string-match prefer să utilizați string-match-p care funcționează exact ca string-match, cu excepția faptului că nu modifică match-data când rulați.

După cum au spus alții, în cazul dvs. looking-at ar fi probabil o alegere mai bună oricum.

(privind REGEXP)

Returnează t dacă textul după punct se potrivește cu expresia regulată REGEXP. Această funcție modifică datele de potrivire la care accesează „începutul meciului”, „sfârșitul meciului” și „datele de potrivire”; salvați și restaurați datele de potrivire dacă doriți să le păstrați.

Comentarii

  • Având în vedere că PO a greșit ordinea argumentului, ar fi probabil o idee bună să afișăm un exemplu de fragment care apelează string-match.

Written by admin

Lasă un răspuns Anulează răspunsul

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Articole recente

  • Folosind un balun cu un dipol rezonant
  • Care este diferența dintre “ nu poate ” și “ nu poate ”? [duplicat]
  • La JFK, vă puteți deplasa între terminalele aeriene pe zborurile interne?
  • “ Apreciat profund ” sau “ apreciat cu drag ”
  • Ce înseamnă ' idei abstracte '? [închis]

Arhive

  • februarie 2021
  • ianuarie 2021
  • decembrie 2020
  • noiembrie 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Copyright Tiantan 2021 | Theme by Theme in Progress | Proudly powered by WordPress

Back to top