我有一个模式(?<=.*?\*)([\-\+])(.\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);
为什么会这样?
答案 0 :(得分:1)
我不确定你的想法是什么正则表达式应该匹配,但问题很可能就在这里:
(<?<=.*?\*)
这将匹配以下内容:<?<=some_arbitary_text_followed_by_a_*
如果你想做一个负面的后视,语法应该是?<=
,但也有.*?
的问题与后视不兼容。这样的事情应该有效:
string pattern = @"(?<=\*)([\-\+])(.\d{0,2})(?=(d))";