rx-to-string
एक तर्क के रूप में regexp फॉर्म लेता है। वाक्य-विन्यास उसी के तर्क के समान है rx
।
(rx-to-string '(or "foo" "bar"))
"\\(?:\\(?:bar\\|foo\\)\\)"
आपने जो उत्तीर्ण करने की कोशिश की, वह एक रेग्जिप फॉर्म नहीं है, बल्कि रेगेक्सपी फॉर्म की एक सूची है। के बाद से आप क्या मतलब नियमित अभिव्यक्ति के अनुक्रम है symbol-start
के बाद तार का एक समूह में से एक के बाद symbol-end
, आप अनुक्रम ऑपरेटर के साथ नेतृत्व की जरूरत है sequence
(जो को संक्षिप्त किया जा सकता है seq
या :
, या अजीब तरह से भी and
)।
(rx-to-string `(: symbol-start (or ,@strings) symbol-end))
"\\(?:\\_<\\(?:ba[rz]\\|foo\\)\\_>\\)"
rx
वास्तव में एक छोटा रैपर है rx-to-string
जो संकलन समय पर काम करता है क्योंकि यह एक मैक्रो है। यह भ्रम पैदा करता है कि यदि आप कई तर्क पास करते हैं rx
, तो एक निहित sequence
ऑपरेटर होता है। प्रलेखन rx
स्पष्ट किया जा सकता है।
(rx (: symbol-start (or "foo" "bar" "baz") symbol-end))
"\\_<\\(?:ba[rz]\\|foo\\)\\_>"
(rx symbol-start (or "foo" "bar" "baz") symbol-end)
"\\_<\\(?:ba[rz]\\|foo\\)\\_>"