2010-09-03 21 views
23

मैं सोच रहा था कि जब पेर्ल में नियमित अभिव्यक्तियों के साथ काम करते हैं तो tr/// से अधिक उपयोग करना चाहिए?पर्ल में रेगेक्स का उपयोग करते समय tr /// और s /// के बीच क्या अंतर है?

+3

आपको सही उत्तर (इसके आगे का चेकबॉक्स) स्वीकार करना चाहिए – Daenyth

उत्तर

26

s/// प्रतिस्थापन के लिए है:

$string =~ s/abc/123/; 

यह पहली "abc" "123" के साथ $string में पाया की जगह लेगा।

tr/// लिप्यंतरण के लिए है:

$string =~ tr/abc/123/; 

यह "2" के साथ "एक" के साथ $string भीतर "1" की सभी घटनाओं की, "बी" की सभी घटनाओं की जगह लेगा, और "सी" की सभी घटनाओं "3" के साथ।

+4

हमारे पसंदीदा गोल्फ पटर, 'y ///' को न भूलें! – Daenyth

7

से perlop: Quote and Quote-like Operators

ध्यान दें कि टीआर ऐसे \ घ या के रूप में नियमित रूप से अभिव्यक्ति चरित्र वर्गों ऐसा नहीं करता है [: कम:]। टी ऑपरेटर tr (1) उपयोगिता के बराबर नहीं है। यदि आप निचले/ऊपरी मामलों के बीच तारों को मैप करना चाहते हैं, तो सामान्य अभिव्यक्तियों की आवश्यकता होने पर सामान्य रूप से ऑपरेटर का उपयोग करने पर विचार करें, तो एलसी और uc, और देखें।

12

tr/// नियमित अभिव्यक्ति ऑपरेटर नहीं है। यह एक सिंगल कैरेक्टर के साथ एक सिंगल कैरेक्टर के प्रतिस्थापन के लिए उपयुक्त है (और s/// से तेज), या (d संशोधक के साथ) शून्य वर्ण वाले एक वर्ण को प्रतिस्थापित करता है।

s///tr के संकीर्ण उपयोग मामलों की तुलना में कुछ अधिक जटिल के लिए उपयोग किया जाना चाहिए।

संबंधित मुद्दे