我有一个字符串,例如:
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
在此字符串中,如果已经存在值,则不要将其用作标签和文本框 仅带有问号,并且像上面那样必须给我输出 如果在'='之间存在空格,则必须将其切割并输出
答案 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”的文本框,才能直接运行代码。