以下是模式:
WORD [COLUMN] %Anything goes%
基本上,我需要提取“WORD”,“COLUMN”以及两个“%”字符之间的值。
答案 0 :(得分:3)
这样的事情?
首先抓住一切到第一个空间,然后抓住[和]之间的所有内容,最后抓住%s之间的所有内容
([^ ]*) \[([^\]])\] %(.*)%
答案 1 :(得分:1)
([A-Z]+) \[([A-Z]+)\] %(.*)%
如果单词和模式全部上限。
答案 2 :(得分:1)
以下正则表达式将每个值提取到命名组中。
(?<Word>(.*))(\s*)\[(?<Column>(.*))\]\s*%(?<Anything>(.*))%
在示例字符串上使用此选项应该会为您提供以下捕获:
Word = "WORD"
Column = "COLUMN"
Anything = "Anything goes"
要运行此正则表达式并获取值,您可以执行以下操作(不要将此视为最佳实践,而只是为了说明一些基本概念)。
Regex regex = new Regex(@"(?<Word>(.*))(\s*)\[(?<Column>(.*))\]\s*%(?<Anything>(.*))%");
Match match = regex.Match("WORD [COLUMN] %Anything goes%");
Console.WriteLine(match.Groups["Word"].Value);
Console.WriteLine(match.Groups["Column"].Value);
Console.WriteLine(match.Groups["Anything"].Value);
这应该将组捕获输出到控制台。有关C#中正则表达式的更多信息,请查看Regex
的MSDN文档(这也将链接到您可能遇到的其他类型)。我还建议使用Expresso作为帮助您构建和分析正则表达式的工具。 Expresso还支持代码发射和各种其他有用的功能。