C# 正则表达式匹配与拆分相同的字符串
C# Regex Match Vs Split for same string
我在 Linqpad 中使用正则表达式来提取字符串。我有一些疑问,我正在分享。任何人都可以对这件事有所了解。 -
string s = "abc|xyz";
Regex.Match(s, @"(\w*)[|]{1}(\w*)").Dump();
Regex.Split(s, @"(\w*)[|]{1}(\w*)").Dump();
使用 Regex.Match
我得到了两个我可以轻松提取的组。
。
但我不明白为什么 Regex.Split
中有两个空条目。
让我们分析一下您的字符串:
abc|xyz
\_____/ <-- the match
\_/ <-- capture group 1
\_/ <-- capture group 2
Regex.Split
将捕获的组包含到结果数组中。
整场比赛都发生分裂,就在那里:
abc|xyz
\ \
所以在匹配之前有一个空字符串,在匹配之后有一个空字符串。由于前面提到的拆分行为,插入了中间的两项:
If capturing parentheses are used in a Regex.Split
expression, any captured text is included in the resulting string array. For example, if you split the string "plum-pear" on a hyphen placed within capturing parentheses, the returned array includes a string element that contains the hyphen.
我在 Linqpad 中使用正则表达式来提取字符串。我有一些疑问,我正在分享。任何人都可以对这件事有所了解。 -
string s = "abc|xyz";
Regex.Match(s, @"(\w*)[|]{1}(\w*)").Dump();
Regex.Split(s, @"(\w*)[|]{1}(\w*)").Dump();
使用 Regex.Match
我得到了两个我可以轻松提取的组。
但我不明白为什么 Regex.Split
中有两个空条目。
让我们分析一下您的字符串:
abc|xyz
\_____/ <-- the match
\_/ <-- capture group 1
\_/ <-- capture group 2
Regex.Split
将捕获的组包含到结果数组中。
整场比赛都发生分裂,就在那里:
abc|xyz
\ \
所以在匹配之前有一个空字符串,在匹配之后有一个空字符串。由于前面提到的拆分行为,插入了中间的两项:
If capturing parentheses are used in a
Regex.Split
expression, any captured text is included in the resulting string array. For example, if you split the string "plum-pear" on a hyphen placed within capturing parentheses, the returned array includes a string element that contains the hyphen.