我需要一个正则表达式来从句子中的[
和]
之间取出文本。
示例文字:
Hello World - Test[**This is my string**]. Good bye World.
期望的结果:
**This is my String**
我提出的正则表达式是Test\\[[a-zA-Z].+\\]
,但这会返回整个**Test[This is my string]**
答案 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"
}
如果您使用的正则表达式引擎同时支持lookahead和lookbehind,则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