如何在c#regex语句中指定通配符(用于任何字符)?
试图在C#中使用通配符从网页源获取信息,但我似乎不知道使用什么作为通配符。我试过的都不管用 通配符只需要允许数字,但由于每次生成的页面都是相同的,所以我也可以允许任何字符 正在使用的Regex语句:如何在c#regex语句中指定通配符(用于任何字符)?,c#,.net,regex,C#,.net,Regex,试图在C#中使用通配符从网页源获取信息,但我似乎不知道使用什么作为通配符。我试过的都不管用 通配符只需要允许数字,但由于每次生成的页面都是相同的,所以我也可以允许任何字符 正在使用的Regex语句: Regex guestbookWidgetIDregex = new Regex("GuestbookWidget(' INSERT WILDCARD HERE ', '(.*?)', 500);", RegexOptions.IgnoreCase); 如果有人能找出我做错了什么,我将不胜感激 通配
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 )
请注意,我稍微修改了模式,使其使用否定字符类而不是通配符匹配。如果允许在输入字符串中转义”
,这会导致行为上的细微差别,但这两种模式都不能完美地处理这种情况。但是,如果您不允许转义”
,那么这种模式肯定更好
工具书类
- 及
\d+
。(在@“
字符串中)甜心,明白了!多谢了。我明天会勾选这个答案,我要去睡觉了。