在特殊字符(包括空格或无空格)之前获取单词

时间:2018-10-12 05:52:07

标签: c# regex

我有一个字符串,例如:

string text = "select * from value='value' and testvalue = ?test and status like ?status";

我尝试使用正则表达式:

var m = Regex.Matches(str, @"(\S+)\s+="); //with whitespace
var m = Regex.Matches(str, @"(\S+)="); //without whitespace

我需要在动态标签和文本框中获取输出

output:
label             textbox
testvalue 
status           

在此字符串中,如果已经存在值,则不要将其用作标签和文本框 仅带有问号,并且像上面那样必须给我输出 如果在'='之间存在空格,则必须将其切割并输出

1 个答案:

答案 0 :(得分:0)

我已经尝试过制作一个正则表达式,希望可以为您提供所需的结果:

(\w+)\s?(?:\=|like)\s?(\?\w+)

首先创建一个与一个或多个Group字符匹配的Word和一个可选的white space。然后,它与“ =”(转义)或'like'匹配,后跟可选的white Space,最后创建与问号“ Group”匹配的?(转义),再添加一个或多个Word字符。

Regex创建2 Groups,其中包含您感兴趣的单词。

使用方法

string text = "select * from value='value' and testvalue = ?test and status like ?status";
var m = Regex.Matches(text, @"(\w+)\s?(?:\=|like)\s?(\?\w+)");
foreach (Match match in m)
{
    label.Text += match.Groups[1].Value;
    textbox.Text += match.Groups[2].Value;
}

结果:

label             textbox
testvalue         ?test
status            ?status

修改

我打错了,在代码中应该是'text',而不是测试。

Edit2

您必须具有一个名为“ label”的标签和一个名为“ textbox”的文本框,才能直接运行代码。