2016-03-15 82 views
0

嘗試在|[ID:X] text|中獲取X.無法獲取字符串中的數據正則表達式

但我不能做正確的模式。

X可以是Num和Word。

string pattern = "([ID:(.?)^])"; 
+0

' 「| [ID:X]文|」 .Split( '[', ')')。Where(p => p.StartsWith(「ID:」))。FirstOrDefault()。Substring(3);' –

+0

但是如果我們有[ID:]如何防止錯誤? –

+0

Саша,你用'[ID:]'輸入得到了什麼錯誤? ''[ID:]「。Split('[',']')。Where(p => p.StartsWith(」ID:「))。FirstOrDefault()。Substring(3);'返回一個空字符串。你完全可以檢查'ID:'是否存在:'var res = string.Empty; var val = s.Split('[',']')。Where(p => p.StartsWith(「ID:」))。FirstOrDefault(); if(val!= null)res = val.Substring(3);' –

回答

0

試圖讓X|[ID:X] text|

你可能只是分裂與[]字符串,得到與ID:開始部分,並獲得什麼是後:

var s = "|[ID:X] text|"; 
var res = string.Empty; 
var val = s.Split('[', ']').Where(p => p.StartsWith("ID:")).FirstOrDefault(); 
if (val != null) 
    res = val.Substring(3); 

一個正則表達式的解決方案(殛X可Num和字):

\[ID:(\w*)] 

regex demo

C#去除[ID:...]演示:

var res = Regex.Replace("|[ID:X] text|", @"\[ID:(\w*)]", string.Empty); 
// => | text| 

C#演示展示瞭如何獲得X

var res = string.Empty; 
var m = Regex.Match("|[ID:X] text|", @"\[ID:(\w*)]"); 
if (m.Success) 
    res = m.Groups[1].Value;