【发布时间】:2014-04-02 19:01:18
【问题描述】:
问题:我应该将* 或\* 或\\* 放在C# RegEx 模式中的什么位置以匹配目标中的星号?
\? 或 \\? 同上
详情...
我有一个允许这种输入的应用程序
- 一个或两个十六进制字符:
0-9,或a-f,或A-F - 然后是强制逗号:
, - 然后是可选的空白(尽可能多或尽可能少,或者没有):
简要说明...
0, 到 F, 以及 00, 到 FF,忽略字母的大小写。之前和之后的可选空格是可以的。逗号用于分隔,但不允许在末尾使用。 (最后一个字符必须是空格或文本结尾)
之后,该模式可以根据用户的需要重复多次。 (空白不必平衡。)
示例...
00, F1, 33, A7, 21, 14, 0D, 0A, 30,30,30,31, 41, 3e,3e,3e, 41, 5A, 0
下面的代码非常适合这个...
private bool See_If_This_Input_Is_Okay(string The_Callers_Text)
{
String pattern = @"^\s*([0-9A-Fa-f]{1,2},\s*)*[0-9A-Fa-f]{1,2}\s*$";
bool matches = Regex.IsMatch(The_Callers_Text, pattern);
return (matches);
}
现在我希望模式适应...
- 一个或两个相邻的星号,可以是:
*或**,然后是强制逗号:, - 一个或两个相邻问号,可以是:
?或??,然后是强制逗号:,
简要说明...
0, 至F, 或00, 至FF,或*, 或**, 或?, 或??,
(在每个字符串之前和之后 [但不在] 之后再次使用从零到随机的空格,强制使用逗号)
示例...
00, ??, 33, A7, 21, 14, ?,?, 30,30,30,31, **, 3e,3e,3e, *, 5A, 0
在这里阅读了 20 或 30 篇类似的帖子后,我仍然不知道将 \* 和 \? 序列放在 pattern 字符串中的哪个位置。
我也试过\\*,但一无所获。
这包括在f 之后、$ 之前、s* 之后(任一)在括号内、括号外;我想我可以对我的文本编辑器进行编程,使其复制 51 个有问题的行并尝试每个位置;但我真的很想了解这一点,而不仅仅是让它发生。
如果有人能解释什么去哪里,谢谢,那就行了。我真正想知道的是在哪里解释和记录了这一点。我将省略我访问过的十几个旨在解释这一点的网页。
感谢任何可以回答此问题的人。
【问题讨论】:
-
^\s*([0-9A-Fa-f\?\*]{1,2},\s*)*[0-9A-Fa-f\?\*]{1,2}\s*$
标签: c# regex pattern-matching