我有这个字符串:
1 = 0 AND 2 = 3
并正在使用此正则表达式:
\s*(?<SearchCondition>.+?)\s*(AND|OR|$)
我想返回以下内容,如(http://regexhero.net/tester/)所示,但由于某些原因,它不是这样:
1: AND
SearchCondition: 1 = 0
1:
SearchCondition: 2 = 3
这是我的代码:
Dim whereElem As String = "1 = 0 AND 2 = 3"
Dim regex As New Regex("\s*(?<SearchCondition>.+?)\s*(AND|OR|$)", RegexOptions.IgnoreCase)
m = regex.Match(whereElem)
If m.Success Then
Console.WriteLine(m.Groups("SearchCondition").Captures.Count)
期望的输出:2
我在这里做错了,但是看不到。有什么提示我要去哪里吗?
您正则表达式仅匹配单个表达,接着是AND
,OR
或字符串的末尾:
\s* # whitespace
(?<SearchCondition>.+?) # match and capture before the whitespace
\s* # more whitespace
(AND|OR|$) # either AND, OR, or end of line
由于您的输入是1 = 0 AND 2 = 3
,呼叫Regex.Match
将在第一个之后停止AND
。
您可能想使用Regex.Matches
查找所有匹配项:
var matches = regex.Matches(whereElem);
foreach (Match m in matches)
Console.WriteLine(m.Groups["SearchCondition"]);
希望您不介意C#的答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句