. $ ^ { [ ( | ) * + ? \
[
character_group]
匹配 character_group中的任何单个字符。
[^
character_group]
匹配不在character_group中的任意单个字符匹配。
[
first-
last]
匹配从first到last的范围中的任意单个字符匹配。
.
匹配除\n
之外的任意单个字符。
\w
匹配任何单词字符,等同于[A-Za-z0-9_]
。
\W
匹配任何非单词字符。
\s
匹配任何空白字符。
\S
匹配任何非空白字符。
\d
匹配任何十进制数字。
\D
匹配不是十进制数的任意字符。
^
默认情况下,必须从字符串的开头开始匹配;在多行模式中,必须从该行的开头开始。
$
默认情况下,匹配必须出现在字符串的末尾,或在字符串末尾的 \n
之前;在多行模式中,必须出现在该行的末尾之前,或在该行末尾的 \n
之前。
分组构造描述了正则表达式的子表达式,通常用于捕获输入字符串的子字符串。
(
子表达式)
捕获匹配的子表达式并将其分配到一个从 1 开始的序号中。
(?<
名称>
子表达式)
将匹配的子表达式捕获到一个命名的组中。
var match = Regex.Match(input, "%(?<name>.+)%");
if (match.Success)
{
cardNo = match.Groups["name"].Captures[0].Value;
}
(?=
子表达式)
零宽度,表达式后面匹配。
(?!
子表达式)
零宽度,表达式后面不匹配。
(?<=
子表达式)
零宽度,表达式前面匹配。
(?<!
子表达式)
零宽度,表达式前面不匹配。
零宽度:子表达式只做匹配,结果并不包含在父表达式匹配结果中。
*
匹配上一个元素零次或多次。
+
匹配上一个元素一次或多次。
?
匹配上一个元素零次或一次。
{
n}
匹配上一个元素恰好 n 次。
{
n,}
匹配上一个元素至少 n 次。
{
n,
m}
匹配上一个元素至少 n 次,但不多于 m 次。
*?
匹配上一个元素零次或多次,但次数尽可能少。
+?
匹配上一个元素一次或多次,但次数尽可能少。
??
匹配上一个元素零次或一次,但次数尽可能少。
{
n,}?
匹配上一个元素至少 n 次,但次数尽可能少。
{
n,
m}?
匹配上一个元素的次数介于 n 和 m 之间,但次数尽可能少。
|
匹配以竖线 |
字符分隔的任何一个元素。
$number
包括替换字符串中的由 number*标识的捕获组所匹配的最后一个子字符串,其中 *number 是一个十进制值。
${name}
包括替换字符串中由 (?<
name>)
指定的命名组所匹配的最后一个子字符串。
var result = Regex.Replace(input, "URI=\"(?<uri>.+)\"", match =>
{
var uri = match.Groups["uri"].Captures[0].Value;
return $"URI=\"{uri}\"";
});