使用Regex搜索文本

时间:2011-10-31 07:11:21

标签: regex c#-4.0

我需要一个正则表达式来从句子中的[]之间取出文本。

示例文字:

Hello World - Test[**This is my string**]. Good bye World.

期望的结果:

**This is my String**

我提出的正则表达式是Test\\[[a-zA-Z].+\\],但这会返回整个**Test[This is my string]**

3 个答案:

答案 0 :(得分:2)

您可以使用捕获组来访问感兴趣的文本:

\[([^]]+)\]

使用JavaScript快速证明概念:

var text = 'Hello World - Test[This is my string]. Good bye World.'
var match = /\[([^\]]+)\]/.exec(text)
if (match) {
  console.log(match[1]) // "This is my string"
}

如果您使用的正则表达式引擎同时支持lookaheadlookbehind,则Tim的解决方案更合适。

答案 1 :(得分:2)

Match m = Regex.Match(@"Hello World - Test[This is my string]. Good bye World.", 
            @"Test\[([a-zA-Z].+)\]");
Console.WriteLine(m.Groups[1].Value);

答案 2 :(得分:1)

(?<=Test\[)[^\[\]]*(?=\])

应该做你想做的事。

(?<=Test\[) # Assert that "Test[" can be matched before the current position
[^\[\]]*    # Match any number of characters except brackets
(?=\])      # Assert that "]" can be matched after the current position

阅读lookaround assertions