Skip to content
Tiantan
Articles

Existuje ekvivalent shody řetězců pro regexp?

On 17 února, 2021 by admin

Chtěl bych něco takového napsat, kromě srovnání regionu s regexp.

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

Existuje ekvivalent shody řetězců pro regexp, který mohu takto použít

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

tak, aby vracel true, pokud je vybraná oblast „Apple“ a nulové, pokud je to „jablko“?

Komentáře

  • Několik náhodných poznámek: (i) string-match již používá regexps (ii) let-bind case-fold-search k nulovému ukončení hovoru, pokud chcete rozlišovat velká a malá písmena (iii) použijte looking-at pro shodu textu v bodě (iv) můžete místo pointregion-beginning a region-end / div> a mark v případě, že je předcházející předcházející (bonusový bod za to, že use-region-p je nenulový)
  • @YoungFrom Myslím, že položka (i) se kvalifikuje jako odpověď.
  • C-h f vám to řekne.

Odpověď

Kvůli odpovědi:

string-match je určen pro použití s regexps.

(shoda řetězce REGEXP STRING & volitelný START)

Vrátí index začátku první shody pro REGEXP v STRING nebo nulový. Odpovídající ignoruje velká a malá písmena, pokud je „case-fold-search“ nenulové. Pokud je třetí argument START nenulový, začněte hledat v tomto indexu v řetězci STRING. U indexu prvního znaku nad rámec shody proveďte (konec zápasu 0). match-end a match-beginning také dávají indexy dílčích řetězců shodných s konstrukcemi závorek ve vzoru.

Pomocí funkce match-string můžete extrahovat dílčí řetězce shodné s konstrukcemi závorek v REGEXP.

Zde je několik příkladů

 (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  

Všimněte si, že pokud po použití string-match nemáte v plánu použít match-data raději použít string-match-p, který funguje stejně jako string-match kromě toho, že nezmění match-data při spuštění.

Jak již bylo řečeno, ve vašem případě by looking-at byla pravděpodobně i tak lepší volba.

(při pohledu na REGEXP)

Vrátí t, pokud text za bodem odpovídá regulárnímu výrazu REGEXP. Tato funkce upravuje údaje o shodě, ke kterým mají přístup „začátek zápasu“, „konec zápasu“ a „data shody“; uložte a obnovte údaje o shodě, pokud je chcete uchovat.

Komentáře

  • Vzhledem k tomu OP má nesprávné pořadí argumentů, pravděpodobně by bylo dobré ukázat ukázkový úryvek volající string-match.

Written by admin

Napsat komentář Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Nejnovější příspěvky

  • Pomocí balunu s rezonančním dipólem
  • Jaký je rozdíl mezi “ nelze ” a “ ”? [duplicate]
  • Můžete se na JFK pohybovat mezi terminály mimo letiště na vnitrostátních letech?
  • “ Hluboce ceněný ” nebo “ velmi ceněn ”
  • Co ' abstraktní myšlenky ' znamenají? [uzavřeno]

Archivy

  • Únor 2021
  • Leden 2021
  • Prosinec 2020
  • Listopad 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