Regex帮助示例模式。C#

Regex帮助示例模式。C#,c#,regex,C#,Regex,我决定使用正则表达式,现在我有两个问题:) 给定输入字符串“hello world[2][200][%8][%1c][%d]” 匹配“[%8]”、[%1c]”、“+”[%d]”实例的合适模式是什么?(所以是一个百分号,后跟任意长度的字母数字,都用方括号括起来) 对于“[2]”和[200],我已经使用了 Regex.Matches(input, "(\\[)[0-9]*?\\]"); 这很好用 任何帮助都将被告知。尝试以下方法: Regex.Matches(input, "\\[%[0-9a-f

我决定使用正则表达式,现在我有两个问题:)

给定输入字符串“hello world[2][200][%8][%1c][%d]”

匹配“[%8]”、[%1c]”、“+”[%d]”实例的合适模式是什么?(所以是一个百分号,后跟任意长度的字母数字,都用方括号括起来)

对于“[2]”和[200],我已经使用了

Regex.Matches(input, "(\\[)[0-9]*?\\]");
这很好用

任何帮助都将被告知。

尝试以下方法:

Regex.Matches(input, "\\[%[0-9a-f]+\\]");
或作为组合正则表达式:

Regex.Matches(input, "\\[(\\d+|%[0-9a-f]+)\\]");
试试这个:

Regex.Matches(input, "\\[%[0-9a-f]+\\]");
或作为组合正则表达式:

Regex.Matches(input, "\\[(\\d+|%[0-9a-f]+)\\]");
怎么样
@“\[%[0-9a-f]*?\]”

怎么样
@“\[%[0-9a-f]*?\]”


匹配字符串中“[%anyLengthPhanumeric]”模式所需的正则表达式是“[(%\w+)”

前导“[”用“\”转义,然后您将用(…)创建一组字符。此分组定义为%\w+。w是所有单词字符(包括字母和数字)的快捷方式,不带空格。+匹配上一个符号、字符或组的一个或多个实例。然后尾随“]”用空格转义“\”并抓住闭合支架

下面是一个基本代码示例:

string input = @"hello world [2] [200] [%8] [%1c] [%d]";
Regex example = new Regex(@"\[(%\w+)\]");
MatchCollection matches = example.Matches(input);

匹配字符串中“[%anyLengthPhanumeric]”模式所需的正则表达式是“[(%\w+)”

前导“[”用“\”转义,然后您将用(…)创建一组字符。此分组定义为%\w+。\w是所有单词字符(包括字母和数字)的快捷方式,不带空格。+匹配上一个符号、字符或组的一个或多个实例。然后尾随“]”用“\”转义\“并抓住闭合支架

下面是一个基本代码示例:

string input = @"hello world [2] [200] [%8] [%1c] [%d]";
Regex example = new Regex(@"\[(%\w+)\]");
MatchCollection matches = example.Matches(input);

为什么\\[包装在一个组中?嗯…我在这里使用旧代码,但是去掉“)”会导致…”解析“(\\[[0-9]+\]\”-不够)”异常消息。您还需要删除“(”。为什么\\[包装在一个组中?嗯…我在这里使用旧代码,但是去掉“)”会导致…”解析“(\\\[[0-9]+\\]\“-不够)”“异常消息。您还需要删除“(”。考虑到他发布的示例字符串的内容,似乎[%xx]是十六进制数字的表示法。因此,我认为匹配任何字符都不是正确的解决方案。@Samuel-这可能通过他的示例传达,但OP明确表示”后跟任意长度的字母数字".BTW,如果它只应该是十六进制,也许最好是让你的解决方案不区分大小写。不,不是十六进制,抱歉混淆了。干杯,Lieven。那太完美了。Lieven,是的,不是十六进制,但我意识到我现在的解决方案无论如何都应该是不区分大小写的,所以感谢你的提醒。考虑到他发布的示例字符串的内容,它[%xx]似乎是十六进制数字的表示法。因此,我认为匹配任何字符都不是正确的解决方案。@Samuel-这可能通过他的例子来传达,但OP明确表示“后跟任意长度的字母数字”.顺便说一句,如果它只应该是十六进制,也许最好让你的解决方案不区分大小写。不,不是十六进制,很抱歉混淆了。干杯,列文。那太完美了。列文,是的,不是十六进制,但我意识到我现在的解决方案无论如何都应该不区分大小写,所以谢谢你的提醒。