2011-08-02 138 views
0

我有一个巨大的字符串。我需要从那个巨大的字符串中提取一个子字符串。条件是以“TECHNICAL”或“JUSTIFY”开头的字符串,并以1到10之间的任意数字结尾。例如,我有从一个巨大的字符串中提取子字符串

string x =“这是一个测试,我再次测试技术:我需要从测试开始提取这个子字符串。8.这是一次又一次的测试。

所以我需要这个

技术:我需要提取这个子开始测试。

我想知道是否有人有优雅的解决方案。

在此先感谢。

回答

0

您可以使用正则表达式。
实施例:

string input = "This is a test, again I am test TECHNICAL: I need to extract this substring starting with testing. 8. This is test again and again and again and again"; 
string pattern = @"(TECHNICAL|JUSTIFY).*?(10|[1-9])"; 

System.Text.RegularExpressions.Regex myTextRegex = new Regex(pattern); 

Match match = myTextRegex.Match(input); 
string matched = null; 
if (match.Groups.Count > 0) 
{ 
    matched = match.Groups[0].Value; 
} 

//Result: matched = TECHNICAL: I need to extract this substring starting with testing. 8 
+0

我会使用这个表达式:'(技术| JUSTIFY)*([1-9] | 10)'。?。 – MRAB

+0

我稍微改变了字符串,我得到了错误的结果。我的新字符串是字符串输入=“1.TECHNICAL:这是一个测试BLAH BLAH BLAH RAL ESTATE。6.测试描述”。当我申请你的正则表达式时,我只得到1而不是TECHNICAL:这是一个测试BLAH BLAH BLAH REAL ESTATE。 – Anjali5

+0

@MRAB是的,谢谢,这是更简单的,我用你的,但只使'10'先这样'(TECHNICAL | JUSTIFY)。*?(10 | [1-9])' –

相关问题