预搜索分两种,一种是向右,另外一种是向左, 以下是各个表达式在.net中的使用例子: 1.向右肯定搜索: string rega = @"(?=[^1-9]\d+)"; string test="1t2t5"; MatchCollection mc= Regex.Matches(test,rega); 此时返回的结果集中包含 2,5. 2.向右否定搜索: string regb = @"(?![^1-9])(\d+)"; string test="1t2t5"; MatchCollection mc= Regex.Matches(test,regb); 此时返回的结果集中包含 1,2,5. 3.向左肯定搜索: string regb = @"(?<=[^1-9])(\d+)"; string test="1t2t5"; MatchCollection mc= Regex.Matches(test,regb); 此时返回的结果集中包含 2,5 4.向左否定搜索: string regb = @"(\d+)(?<![^1-9])"; string test="1t2t5"; MatchCollection mc= Regex.Matches(test,regb); 此时返回的结果集中包含 1,2,5 不知道为什么,当(\d+)在向左反向预搜索表达式右边时,返回的结果集元素会少一位 ,思考中. |