需要分割一个字符串,用逗号分割,单引号中的作为一个整体,但里面可能包含逗号,所以不能直接用split,我写了个正则表达式,但是分割的单引号旁边会有两个空行,求一个正确的正则表达式string ss = "'64031,TJ,Han',100401,54321,IL,CA,1075,10000,30,4000";
System.Text.RegularExpressions.Regex reg3 = new System.Text.RegularExpressions.Regex("['](.*)[']|[,]");
///开始分割字符串
string[] name = reg3.Split(ss);
System.Text.RegularExpressions.Regex reg3 = new System.Text.RegularExpressions.Regex("['](.*)[']|[,]");
///开始分割字符串
string[] name = reg3.Split(ss);
string[] result = Regex.Split(str, @"(?<!'[^,]+),(?![^,]+')");
foreach(string s in result)
Console.WriteLine(s);
理事,如果"'6403134234,23423,423,234,TJ,Han',100401,54321,IL,CA,1075,10000,30,4000"怎么办
string ss = "'64031,TJ,Han','asdf,asdfasdf,asdfasdf,asdfasdf',100401,54321,IL,CA,1075,10000,30,4000";
string[] sss = Regex.Split(ss, "(?n),(?<=^('[^']+',|[^']+,)+)");
foreach (string s in sss)
{
Console.WriteLine(s);
}
string[] result = Regex.Split(str, @"(?<!'[^',]+),(?![^']+')");
foreach (string s in result)
Console.WriteLine(s);
比如
"'64031,TJ,Han,'asdfa,asdf'','asdf,asdfasdf,asdfasdf,asdfasdf',100401,54321,IL,CA,1075,10000,30,4000";如果要做到正确,最好还是用匹配和平衡组。
#!/usr/bin/python
# encoding: utf-8import re
patt = re.compile(r'''
'([^']+)', # '64031,TJ,Han',
(\d+), # 100401,
(\d+), # 54321,
([A-Z]{2}), # IL,
([A-Z]{2}), # CA,
(\d+), # 1075,
(\d+), # 10000,
(\d+), # 30,
(\d+) # 4000
''', re.I|re.U|re.X)content = '64031,TJ,Han',100401,54321,IL,CA,1075,10000,30,400064031,TJ,Han|100401|54321|IL|CA|1075|10000|30|4000
# encoding: utf-8import re
patt = re.compile(r'''
'([^']+)', # '64031,TJ,Han',
(\d+), # 100401,
(\d+), # 54321,
([A-Z]{2}), # IL,
([A-Z]{2}), # CA,
(\d+), # 1075,
(\d+), # 10000,
(\d+), # 30,
(\d+) # 4000
''', re.I|re.U|re.X)content = "'64031,TJ,Han',100401,54321,IL,CA,1075,10000,30,4000"m = patt.match(content)
print '|'.join(m.groups())
64031,TJ,Han|100401|54321|IL|CA|1075|10000|30|4000