String input = @"111n!a222\n!a333\\n!a444\\\n!aabcd\\\\n!a123";
用不包含“\”或双数个“\”和“n!a”开头的内容拆分字符串,拆分成以下样式,要怎么写。
/*
111, n!a, 222\n!a333, \\n!a, 444\\\n!aabcd, \\\\n!a, 123
*/
现在只能拆分成这样。
String input = @"111n!a222\n!a333\\n!a444\\\n!aabcd\\\\n!a123";
string pattern = @"(\\*n!a)";
Regex regex = new Regex(pattern);
string[] split = Regex.Split(input, pattern);
Console.WriteLine(String.Join(",", split));
/*
111, n!a, 222, \n!a, 333, \\n!a, 444, \\\n!a, abcd, \\\\n!a, 123
*/
你这个切分提取方式感觉没什么规律啊?这些的方式,即便写出正则,也没什么意义,换个字符串都未必正确
如果用 Python 中,这是杀鸡🐔,用不上re的那把牛刀。字符串方法str.split()就能胜任。
用 str.split() 还真不行!😂😂😂😂她不支持原字符串 r'' ,您要处理的字符串反斜杠太多,无法搞。🤔还得用 re.split() ——
#!/sur/bin/nve python
# coding: utf-8
import re
s = ["111n!a222\n!a333\\n!a444\\\n!aabcd\\\\n!a123"]
ss = ['''111, n!a, 222\n!a333, \\n!a, 444\\\n!aabcd, \\\\n!a, 123''']
print('\n字符串:\n', s)
print('\n拆分目标字符串:\n', ss)
result = [] # 拆分目标列表初值。
s = s[0]
for i in (r'\\\\n!a', r'\\n!a', r'n!a'):
temp = re.split(i, s)
result += [temp[1]]
s = temp[0]
s = s.replace(i, '')
result = result + [temp[0]]
input(f"\n拆分:\n{result[::-1]}")
我没连接拆分标识字符,您可以自行连接,太刁钻了,这对于我🤣🤣