包含空格的多个字符串的正则表达式
问题描述:
我需要一个正则表达式来过滤查询。例如,我得到一个查询输入如下。包含空格的多个字符串的正则表达式
state:CA AND country:US OR postalcode:8888
在这里,我需要根据“AND”,“OR”(任何情况)提取术语。有人可以提供正则表达式,我可以提取诸如“状态:CA”,“国家:美国”等字样吗?
我想考虑AND和OR之前和之后的空格,因为其他术语可能包含“和”,“或”作为字符串的一部分。
Eg: state:OR AND country:US
更新: 我已经试过这样的事情
\sAND\s|\sOR\s
有了这个,我能找到的模式 “AND”, “OR”。但是,如何使其不区分大小写?
答
你使用什么风味或正则表达式?
如果您的键/值对的值总是由只有一个字,这会做:
\w+:\w+
测试它here。
更新: 因为你的价值只由多个单词组成,我想你应该分裂成字符串键/值对,而不是使用正则表达式的。
这里是你如何能做到这一点的的JavaScript:
var s = 'state:New York AND country:US OR postalcode:8888'
var dataBlocks = s.replace(/AND|and|And|OR|Or/g, '|').split('|')
for(var i = 0; i < dataBlocks.length; i++) dataBlocks[i] = dataBlocks[i].trim()
//your resulting array would like like
//Array [ "state:New York", "country:US", "postalcode:8888" ]
同样的解决方案,在C#:
Regex r = new Regex(@"AND|and|And|OR|Or");
var s = "state:New York AND country:US OR postalcode:8888";
var keyValuePairs = r.Replace(s, "|").Split(new char[] { '|' }).Select(z =>
{
var keyValue = z.Trim().Split(new char[] { ':' });
return new KeyValuePair<string, string>(keyValue.FirstOrDefault(), keyValue.LastOrDefault());
});
foreach (var keyValuePair in keyValuePairs)
Console.WriteLine("Key: {0}\tValue:{1}", keyValuePair.Key, keyValuePair.Value);
请分享您的尝试。 – Maroun