Bagaimana cara mencocokkan simbol di regexp?

9

Saya mencoba untuk membangun ekspresi reguler yang cocok dengan simbol, yaitu, hal-hal seperti nama fungsi dan sejenisnya, sesuai dengan pengaturan mode utama saat ini (ini disebut tabel sintaks jika saya ingat dengan benar). Setelah beberapa penyelidikan, saya telah menemukan regexps yang berguna ini:

  • \_< cocok dengan awal simbol

  • \_> cocok dengan akhir simbol

Sekarang saya pikir saya perlu mencari tahu cara mewakili karakter simbol-konstituen. Kami memiliki \wkarakter penyusun kata, tetapi saya tidak dapat menemukan apa pun untuk simbol. Regexp to match simbol harus seperti (dengan asumsi yang \scocok dengan karakter konstituen simbol):

\_<\s+\_>

Apakah saya melewatkan sesuatu? Bagaimana cara mencocokkan simbol?


Perhatikan bahwa pencocokan kata-kata tidak cocok untuk saya. Contoh sepele adalah sesuatu seperti foo-baritu adalah simbol dalam mode Emacs Lisp, tetapi bukan kata (karena -bukan karakter kata-penyusun).

Mark Karpov
sumber
3
Saya biasanya menggunakan (re-search-forward "\\_<\\(?:\\sw\\|\\s_\\)+\\_>" nil t). Ini bekerja, tetapi saya bertanya-tanya sendiri apakah ada cara yang lebih pendek.
abo-abo
2
abo-abo: Jelek seperti itu, AFAIK yang perlu Anda lakukan, simbol yang diberikan dapat berisi karakter simbol-konstituen dan karakter konstituen kata. Anda harus menjawabnya. Mark, Anda akan ingin memeriksa manual untuk melihat apa yang \ssebenarnya berarti, karena sama sekali berbeda dengan asumsi Anda.
phils
@phils, saya bahkan tidak tahu bahwa \sada artinya di Emacs regexps, saya hanya mengambil simbol itu misalnya.
Mark Karpov
@ Mark: Lihat manual Elisp, simpul Regexp Backslash .
Drew

Jawaban:

7

Ada apa dengan ini \_<.*?\_>?

fulvio ciriaco
sumber
Tidak ada yang bisa saya pikirkan. Sangat masuk akal.
phils