正则表达式匹配特定字符后varstr="=IIF(IsNothing(Fields!Metadata1.Value),"N/A",Fields!Metadata1.Value)";varregexp=newRegex(@"字段!(w+)");varmatches=regexp.Matches(str);比赛将有“Fields!Metadata1”,我需要获得“Metadata1”我该如何改变它?不知道c#语法,对于正则表达式,试试:(?编辑添加简短解释:(?仅当bar跟随foo时才匹配bar(foo不会出现在匹配结果中)(?是从前到后,零宽度断言。谷歌一下。你需要的是lookbehind/lookahead。正则表达式有这个功能,你可以在后面指定当前匹配的字符串(或者在这种情况下)。[0-9](?=[az])将匹配任何数字后跟一个小写字母。[0-9](?![az])将匹配任何没有后跟小写字母的数字。(这称为否定前瞻)(?(?将匹配任何前面没有一个小写字母。(这称为负向后视)考虑到这一点,您想要的c#表达式是:varstr="=IIF(IsNothing(Fields!Metadata1.Value),"N/A",Fields!Metadata1。Value)";varregexp=newRegex(@"(?编辑:如果你不想匹配“Fields”!部分......一个稍微不同的任务是如果你想匹配它,但你还需要第二部分的值。在这种情况下,我建议使用命名组,这将捕获整个内容,但您可以从组集合中获取部分。在这种情况下,正则表达式为:Fields!(?'fieldName'w+),c#用法为varstr="=IIF(IsNothing(Fields!Metadata1.Value),"N/A",Fields!Metadata1.Value)";varregexp=newRegex(@"Fields!(?'fieldName'w+)");varmatches=regexp.Matches(str);foreach(在匹配中匹配m){varfieldName=m.Groups["fieldName"].Value;//...}也许你可以试试这个...varmatch=Regex.Match(item,@"!(w+)");然后获取match.Groups[1].Value以上就是C#学习教程:正则表达式匹配特定字符后分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
