逍遥请进~~正则
我一直有个疑问,两个字符之间,有可能出现换行,空格,不换行,或者表种字符的组合 这种要怎么写?
e.g.
<selection type="1" categ="0" parent_id="2" sel_id="3" 后面可能有更多>
我这么写
<?isn><selection[^>]*type[^>]*=[^>]*(?'type'\S*)[^>]*>
现在我是只想取type,有时候我想取 type 各 sel_id,但是=前后有可能有空格,也有可能没有,也有可能有换行,回车之类的,而且""也有可能是'',我怎么写都没写出来
[解决办法]
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { string[] data = { "aa", "a a", "a a", @"a a", @"aa", "a a", "a1a", "aaa" }; Console.WriteLine(@"a\s+a Singleline vs Multiline"); var result1 = data.Select((x, i) => i + ": " + Regex.IsMatch(x, @"a\s+a", RegexOptions.Singleline).ToString()); var result2 = data.Select((x, i) => i + ": " + Regex.IsMatch(x, @"a\s+a", RegexOptions.Multiline).ToString()); Console.WriteLine(string.Join("\r\n", result1.Zip(result2, (x, y) => x + "\t" + y))); Console.WriteLine(@"a.+a Singleline vs Multiline"); result1 = data.Select((x, i) => i + ": " + Regex.IsMatch(x, @"a.+a", RegexOptions.Singleline).ToString()); result2 = data.Select((x, i) => i + ": " + Regex.IsMatch(x, @"a.+a", RegexOptions.Multiline).ToString()); Console.WriteLine(string.Join("\r\n", result1.Zip(result2, (x, y) => x + "\t" + y))); } }}
[解决办法]
(?isn)<selection\b\s+[^>]*type[^>=]*=("(?<type>[^"]+)"|(?<type>\S+))[^>]*?sel_id[^>=]*=("(?<sel_id>[^"]+)"|(?<sel_id>\S+))