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\\)\\_>"