2008-08-12 9 views
13

Regex में C# का उपयोग करके आप चयनित टेक्स्ट कैसे पुनर्प्राप्त करते हैं?सी # में रेगेक्स का उपयोग करके आप चयनित टेक्स्ट कैसे पुनर्प्राप्त करते हैं?

मैं सी # कोड है कि इस पर्ल कोड के बराबर है देख रहा हूँ:

$indexVal = 0; 
if($string =~ /Index: (\d*)/){$indexVal = $1;} 

उत्तर

7
int indexVal = 0; 
Regex re = new Regex(@"Index: (\d*)") 
Match m = re.Match(s) 

if(m.Success) 
    indexVal = int.TryParse(m.Groups[1].toString()); 

मैं समूह संख्या गलत हो सकता है, लेकिन आप इसे यहाँ से यह पता लगाने में सक्षम होना चाहिए।

1

आप मिलान किया समूहों का उपयोग करना चाहते हैं, तो कुछ की तरह ...

Regex MagicRegex = new Regex(RegexExpressionString); 
Match RegexMatch; 
string CapturedResults; 

RegexMatch = MagicRegex.Match(SourceDataString); 
CapturedResults = RegexMatch.Groups[1].Value; 
7

मैं पैट्रिक किसी न किसी यह एक लगता है - मेरी केवल सुझाव याद रखना होगा कि नामित regex समूहों मौजूद हैं, भी है, इसलिए आप पर नहीं है जो सरणी अनुक्रमणिका संख्याओं का उपयोग करने के लिए है।

Regex.Match(s, @"Index (?<num>\d*)").Groups["num"].Value 

मुझे लगता है regex के साथ-साथ, इस तरह से थोड़ा अधिक पठनीय है, हालांकि opinions vary ...

1

कि (किया जाएगा यहाँ मैं

int indexVal = 0; 
Regex re = new Regex(@"Index: (\d*)"); 
Match m = re.Match(s); 

if (m.Success) 
    indexVal = m.Groups[1].Index; 

तुम भी आप समूह नाम कर सकते हैं भी regexp का संकलन)

int indexVal = 0; 
Match m2 = Regex.Match(s, @"Index: (?<myIndex>\d*)"); 

if (m2.Success) 
    indexVal = m2.Groups["myIndex"].Index; 
0
int indexVal = 0; 
Regex re = new Regex.Match(s, @"(<?=Index:)(\d*)"); 

if(re.Success) 
{ 
    indexVal = Convert.ToInt32(re.Value); 
} 
को छोड़ दिया गया है
संबंधित मुद्दे