c#中的正则表达式模式不会返回结果

时间:2015-01-05 22:42:06

标签: .net regex

我有一个模式(?<=.*?\*)([\-\+])(.\d{0,2})(?=(d)) 当我在我的c#代码中使用这个模式时,它将使用http://regexstorm.net/tester在字符串* -45d中返回-45,它不会返回任何内容。

string text= "*-4d";
string pattern = @"(<?<=.*?\*)([\-\+])(.\d{0,2})(?=(d))";
var result= Regex.Match(text, pattern);

为什么会这样?

dotNetFiddle

1 个答案:

答案 0 :(得分:1)

我不确定你的想法是什么正则表达式应该匹配,但问题很可能就在这里:

 (<?<=.*?\*)

这将匹配以下内容:<?<=some_arbitary_text_followed_by_a_*

如果你想做一个负面的后视,语法应该是?<=,但也有.*?的问题与后视不兼容。这样的事情应该有效:

string pattern = @"(?<=\*)([\-\+])(.\d{0,2})(?=(d))";