我花了一些时间解决这个问题,但确实需要正则表达式专家的帮助。
到目前为止,我有以下内容并不能完全满足我的需求。
[。*?] \ s [=> <] + \ s [@] \ w +
从下面的示例字符串中,我需要所有出现的字段,后跟一个参数\变量。参数以“ @”开头。
然后我将使用结果替换.net中每个值的内容。
因此,正则表达式将匹配
[System.TeamProject] = @project
[Microsoft.VSTS.Common.ClosedDate] >= @startOfDay
[Microsoft.VSTS.Common.ClosedDate] >= @startOfDay
注意[System.State] ='Closed'不匹配。
示例字符串
select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] from WorkItems where [System.TeamProject] = @project and [Microsoft.VSTS.Common.ClosedDate] >= @startOfDay and [System.State] = 'Closed' and [Microsoft.VSTS.Common.ClosedDate] >= @startOfDay
感谢堆!
答案 0 :(得分:0)
此正则表达式应执行您想要的操作:
\[([^]]*)]\s+[><=]+\s+(\@\w+)
主要变化是需要对正则表达式初始部分的[
和]
进行转义。我还添加了捕获组以收集字段名称(组1)和参数值(组2)。
答案 1 :(得分:0)
我的猜测是,也许您正在尝试编写类似于以下内容的表达式:
\[([^\]]*)\]\s*(=|>=|<=)\s*(@\w+)
并替换为类似于以下内容的字符串:
[new_value] $2 $3
我添加了一些捕获组,不确定所需的输出,您可以根据需要简单地删除或修改这些捕获组。
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\[([^\]]*)\]\s*(=|>=|<=)\s*(@\w+)";
string substitution = @"[new_value] $2 $3";
string input = @"select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] from WorkItems where [System.TeamProject] = @project and [Microsoft.VSTS.Common.ClosedDate] >= @startOfDay and [System.State] = 'Closed' and [Microsoft.VSTS.Common.ClosedDate] >= @startOfDay
Note [System.State] = 'Closed' is not matched.";
RegexOptions options = RegexOptions.Multiline;
Regex regex = new Regex(pattern, options);
string result = regex.Replace(input, substitution);
}
}
如果您希望简化/修改/探索表达式,请在regex101.com的右上角进行说明。如果愿意,您还可以在this link中查看它如何与某些示例输入匹配。
jex.im可视化正则表达式: