2011-10-31 69 views
2

我需要一個正則表達式來從句子中的[]之間獲取文本。使用正則表達式搜索文本

示例文本:

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

所需的結果:

**This is my String** 

,我想出正則表達式是Test\\[[a-zA-Z].+\\],但這返回整個**Test[This is my string]**

回答

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

+0

謝謝...作品像一個魅力。 – Jakes

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,蒂姆的解決方案更合適。

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);