c# 中的正则表达式模式没有 return 结果

regex pattern in c# doesn't return result

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

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

知道这是为什么吗?

dotNetFiddle

我不确定您认为 正则表达式应该匹配什么,但问题很可能出在这里:

 (<?<=.*?\*)

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

如果你想做一个否定的后视,语法应该是?<=,但也有.*?的问题,它与后视不兼容。像这样的东西应该可以工作:

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