खोज…


पैरामीटर

पंक्ति में विवरण
$ संख्या समूह संख्या द्वारा मिलान की गई विकल्प को सब्स्क्राइब करें।
$ {नाम} एक नामित समूह नाम से मिलान किए गए विकल्प को सब्सक्राइब करें।
$$ परिणाम (प्रतिस्थापन) स्ट्रिंग में '$' वर्ण बच गया।
$ और ($ 0) पूरे मिलान स्ट्रिंग के साथ बदलता है।
$ + ($ और) कब्जे वाले पाठ को अंतिम समूह में मिलाएं।
$ ` मैच से पहले प्रत्येक गैर-मिलान वाले पाठ के साथ सभी मिलान किए गए पाठ को सब्सक्राइब करें।
$ ' मैच के बाद प्रत्येक गैर-मिलान वाले पाठ के साथ सभी मिलान किए गए पाठ को सब्सक्राइब करें।
$ _ पूरे स्ट्रिंग के लिए सभी मिलान किए गए पाठ को सब्सक्राइब करें।
ध्यान दें: इटैलिक शब्द का अर्थ है कि तार अस्थिर हैं (आपके रेगेक्स स्वाद के आधार पर भिन्न हो सकते हैं)।

स्थानापन्नता की मूल बातें

Regex के साथ पाठ को बदलने के लिए सबसे आम और उपयोगी तरीके कैप्चर ग्रुप्स का उपयोग करके है।
या यहां तक कि एक नामांकित कैप्चर समूह , डेटा को स्टोर करने या बदलने के लिए संदर्भ के रूप में।

वहाँ दो शब्दों सुंदर regex के डॉक्स में एक जैसे दिखते हैं, तो यह मिश्रण-अप कभी नहीं करने के लिए प्रतिस्थापन (यानी महत्वपूर्ण हो सकता है कर रहे हैं $1 ) के साथ Backreferences (यानी \1 )। प्रतिस्थापन पाठ में प्रतिस्थापन शब्दों का उपयोग किया जाता है; बैकरेफरेंस, शुद्ध रेगेक्स अभिव्यक्ति में। भले ही कुछ प्रोग्रामिंग भाषाएं प्रतिस्थापन के लिए दोनों को स्वीकार करती हैं, लेकिन यह उत्साहजनक नहीं है।

मान लें कि हमारे पास यह regex है: /hello(\s+)world/i । जब भी $number संदर्भित है (इस मामले में $1 ), के अनुरूप व्हाइटस्पेस \s+ बजाय बदल दिया जाएगा।
उसी परिणाम को regex: /hello(?<spaces>\s+)world/i साथ उजागर किया जाएगा। और जैसा कि हमारे यहाँ एक नामित समूह है, हम ${spaces} का भी उपयोग कर सकते हैं।

इसी उदाहरण में, हम $0 या $& उपयोग भी कर सकते हैं ( नोट: $& का उपयोग $+ बजाय किया जा सकता है, जिसका अर्थ है अन्य रेगेक्स इंजनों में LAST कैप्चर समूह को पुनः प्राप्त करने के लिए), आपके द्वारा काम कर रहे regex स्वाद के आधार पर, पूरे मिलान पाठ पाने के लिए। (यानी $& लौटा देगा hEllo woRld स्ट्रिंग के लिए: hEllo woRld of Regex! )


$number और ${name} वाक्य का उपयोग करके जॉन लेनन के अनुकूलित उद्धरण का उपयोग करके प्रतिस्थापन के इस सरल उदाहरण पर एक नज़र डालें:

सरल कब्जा समूह उदाहरण: प्रतिस्थापन उदाहरण १

नामित कैप्चर समूह उदाहरण:

प्रतिस्थापन उदाहरण २

उन्नत प्रतिस्थापन

कुछ प्रोग्रामिंग भाषाओं की अपनी रेगेक्स ख़ासियतें हैं, उदाहरण के लिए, $+ टर्म (सी #, पर्ल, वीबी आदि में) जो मेल किए गए पाठ को अंतिम समूह में बदल देता है।

उदाहरण:

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b(\w+)\s\1\b";
      string substitution = "$+";
      string input = "The the dog jumped over the fence fence.";
      Console.WriteLine(Regex.Replace(input, pattern, substitution, 
                        RegexOptions.IgnoreCase));
   }
}
// The example displays the following output:
//      The dog jumped over the fence.

Microsoft आधिकारिक डेवलपर नेटवर्क से उदाहरण [1]


अन्य दुर्लभ प्रतिस्थापन शब्द $` और $' :

$` = मिलान स्ट्रिंग से पहले पाठ से मेल खाता है
$' = मिलान स्ट्रिंग के बाद पाठ से मेल खाता है

इस तथ्य के कारण, इन प्रतिस्थापन स्ट्रिंग्स को अपना काम इस तरह करना चाहिए:

Regex: /part2/
Input: "part1part2part3"
Replacement: "$`"
Output: "part1part1part3" //Note that part2 was replaced with part1, due &` term
---------------------------------------------------------------------------------
Regex: /part2/
Input: "part1part2part3"
Replacement: "$'"
Output: "part1part3part3" //Note that part2 was replaced with part3, due &' term

यहाँ जावास्क्रिप्ट के एक टुकड़े पर काम करने वाले इन प्रतिस्थापनों का एक उदाहरण है:

var rgx = /middle/;
var text = "Your story must have a beginning, middle, and end"
console.log(text.replace(rgx, "$`")); 
//Logs: "Your story must have a beginning, Your story must have a beginning, , and end"
console.log(text.replace(rgx, "$'"))
//Logs: "Your story must have a beginning, , and end, and end"

$_ शब्द भी है जो इसके बजाय पूरे मिलान पाठ को पुनः प्राप्त करता है:
Regex: /part2/
Input: "part1part2part3"
Replacement: "$_"
Output: "part1part1part2part3part3" //Note that part2 was replaced with part1part2part3,
                                                                         // due $_ term

इसे VB में बदलने से हमें यह मिलेगा:

Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "ABC123DEF456"
      Dim pattern As String = "\d+"
      Dim substitution As String = "$_"
      Console.WriteLine("Original string:          {0}", input)
      Console.WriteLine("String with substitution: {0}", _
                        Regex.Replace(input, pattern, substitution))      
   End Sub
End Module
' The example displays the following output:
'       Original string:          ABC123DEF456
'       String with substitution: ABCABC123DEF456DEFABC123DEF456

Microsoft आधिकारिक डेवलपर नेटवर्क से उदाहरण [2]


और अंतिम लेकिन कम से कम प्रतिस्थापन शब्द $$ , जिसे रेगेक्स अभिव्यक्ति में अनुवाद किया जाता है, यह $$ \$ (शाब्दिक $ का एक बचा हुआ संस्करण) के समान होगा।

यदि आप इस तरह से एक स्ट्रिंग से मेल खाना चाहते हैं: उदाहरण के लिए USD: $3.99 , और 3.99 स्टोर करना चाहते हैं, लेकिन इसे $3.99 रूप में केवल एक रेगेक्स से बदल दें, तो आप उपयोग कर सकते हैं:

Regex: /USD:\s+\$([\d.]+)/
Input: "USD: $3.99"
Replacement: "$$$1"
To Store: "$1"
Output: "$3.99"
Stored: "3.99"

यदि आप जावास्क्रिप्ट के साथ इसका परीक्षण करना चाहते हैं, तो आप कोड का उपयोग कर सकते हैं:

var rgx = /USD:\s+\$([\d.]+)/;
var text = "USD: $3.99";
var stored = parseFloat(rgx.exec(text)[1]);
console.log(stored); //Logs 3.99
console.log(text.replace(rgx, "$$$1")); //Logs $3.99

संदर्भ

[१]: अंतिम कैप्चर किए गए समूह को प्रतिस्थापित करना
[२]: संपूर्ण इनपुट स्ट्रिंग को प्रतिस्थापित करना



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow