RegEx查找项目之前而不是之后

本文关键字:之后 查找 项目 RegEx | 更新日期: 2023-09-27 18:11:42

我试图通过Regex(不是xml)获得这个元素的值。我需要把Description从元素中去掉

<ValueExpressionLeft xmlns="http://Microsoft.EnterpriseManagement.Core.Criteria/">
 <Property>$Context/Property[Type='WorkItem!System.WorkItem']/Description$</Property>
</ValueExpressionLeft>

只返回type=

之后的内容
 string typeString = Regex.Match(valueExpressionLeft.Value.ToString(), "(?<=Type='')[^'']+").Value;

我需要得到]/后面的单词描述

我尝试了kessy下面的子条目,但没有效果:

value left only containts this 
$Context/Property[Type='WorkItem!System.WorkItem']/Description$
string left =valueExpressionLeft.Value.ToString();
string fieldname =Regex.Match(left,@"'[Type=''.*'']/([^<]+)[</]").Value;

RegEx查找项目之前而不是之后

我想你只是在寻找Description$这个词?

如果是这样的话,下面的正则表达式应该可以让你得到数据:

'[Type=''.*''']/([^<]+)[</]

Group $1: Description$

EDIT:回答你的评论,是的,它在。net中工作。这里是完整的例子,但是你真的应该阅读一下Regex文档:

string parseText = "<ValueExpressionLeft xmlns='http://Microsoft.EnterpriseManagement.Core.Criteria/'><Property>$Context/Property[Type='WorkItem!System.WorkItem']/Description$</Property></ValueExpressionLeft>";
Match match = Regex.Match(parseText, @"'[Type=''.*''']/([^<]+)[</]");
string field = match.Groups[1].Value;

如果您想在末尾去掉$,您可以使用以下正则表达式:

'[Type=''.*''']/([^<]+)['$]