这是我的问题的简化版本:
我正在尝试提取由非单词字符包围的所有字母,但是当非字符重叠时,我的正则表达式不起作用.
这是我的代码:
var text = "Z#A#B#S";
var regex = new Regex(@"\W(?<letter>\w)\W");
foreach (var m in regex.Matches(text).Cast<Match>())
{
Console.WriteLine("Match = {0}", m.Value);
Console.WriteLine("Letter = {0}", m.Groups["letter"].Value);
Console.WriteLine("-------------------");
}
Run Code Online (Sandbox Code Playgroud)
我希望它匹配A和B,但它只匹配A.这是输出:
Match = #A#
Letter = A
-------------------
Run Code Online (Sandbox Code Playgroud)
这适用于文本"Z#A ## B#S"(两个匹配之间没有重叠).
如何从"Z#A#B#S"文本中提取A和B?
谢谢
使用后面的外观和前瞻
var text = "Z#A#B#S";
var regex = new Regex(@"(?<=\W)\w(?=\W)");
foreach (Match m in regex.Matches(text))
{
Console.WriteLine("Letter = {0}", m.Value);
Console.WriteLine("-------------------");
}
Run Code Online (Sandbox Code Playgroud)
http://www.regular-expressions.info/lookaround.html
| 归档时间: |
|
| 查看次数: |
1559 次 |
| 最近记录: |