Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c#regex语句中指定通配符(用于任何字符)?_C#_.net_Regex - Fatal编程技术网

如何在c#regex语句中指定通配符(用于任何字符)?

如何在c#regex语句中指定通配符(用于任何字符)?,c#,.net,regex,C#,.net,Regex,试图在C#中使用通配符从网页源获取信息,但我似乎不知道使用什么作为通配符。我试过的都不管用 通配符只需要允许数字,但由于每次生成的页面都是相同的,所以我也可以允许任何字符 正在使用的Regex语句: Regex guestbookWidgetIDregex = new Regex("GuestbookWidget(' INSERT WILDCARD HERE ', '(.*?)', 500);", RegexOptions.IgnoreCase); 如果有人能找出我做错了什么,我将不胜感激 通配

试图在C#中使用通配符从网页源获取信息,但我似乎不知道使用什么作为通配符。我试过的都不管用

通配符只需要允许数字,但由于每次生成的页面都是相同的,所以我也可以允许任何字符

正在使用的Regex语句:

Regex guestbookWidgetIDregex = new Regex("GuestbookWidget(' INSERT WILDCARD HERE ', '(.*?)', 500);", RegexOptions.IgnoreCase);

如果有人能找出我做错了什么,我将不胜感激

通配符是

要匹配任意数量的任意字符,请使用
*
(表示零个或多个
)或
+
(表示一个或多个

请注意,您需要将括号转义为
\\(
\\)
。(或
\(
\)
@“
字符串中)

在点上 在正则表达式中,点
几乎匹配任何字符。它通常不匹配的唯一字符是换行符。要使点匹配所有字符,必须启用所谓的单行模式(也称为“点全部”)

在C#中,这是使用指定的。您也可以在模式中使用

工具书类

论元字符与转义
不是唯一的正则表达式元字符。它们是:

(   )   {   }   [   ]   ?   *   +   -   ^   $   .   |   \
根据它们出现的位置,如果您希望这些字符的字面意思(例如,
作为句点),您可能需要执行所谓的“转义”。这是通过在字符前面加上
\
来完成的

当然,
\
也是C#string文本的转义字符。要获得文本
\
,您需要在字符串文本中将其加倍(即
“\\”
是长度为1的字符串)。或者,C#也有所谓的
@
-带引号的字符串文字,其中不处理转义序列。因此,以下两个字符串相等:

"c:\\Docs\\Source\\a.txt"
@"c:\Docs\Source\a.txt"
由于在正则表达式中大量使用了
\
,因此经常使用
@
-引号来避免过多的加倍

工具书类

关于字符类 正则表达式引擎允许您定义字符类,例如,
[aeiou]
是包含5个元音字母的字符类。您还可以使用
-
元字符定义范围,例如
[0-9]
是包含所有10位字符的字符类

由于经常使用数字字符,regex还为其提供了一种速记符号,即
\d
。在C#中,这也将匹配其他Unicode字符集的十进制数字,除非您使用的是
RegexOptions.ECMAScript
,而严格来说它只是
[0-9]

工具书类
相关问题

把它们放在一起 看起来以下各项适合您:

      @-quoting          digits_      _____anything but ', captured
          |                   / \    /     \
new Regex(@"GuestbookWidget\('\d*', '([^']*)', 500\);", RegexOptions.IgnoreCase);
                           \/                     \/
                         escape (              escape )
请注意,我稍微修改了模式,使其使用否定字符类而不是通配符匹配。如果允许在输入字符串中转义
,这会导致行为上的细微差别,但这两种模式都不能完美地处理这种情况。但是,如果您不允许转义
,那么这种模式肯定更好

工具书类

嗯,很高兴知道。因此,如果通配符要检查像425243这样的数字,请使用。+*?要匹配数字,请使用
\d+
。(在
@“
字符串中)甜心,明白了!多谢了。我明天会勾选这个答案,我要去睡觉了。