20分 |
(.*\[.*\].*)|(.*\].*\[.*) |
谢谢兄弟,就是还有个问题想请教下你,比如有一个字符串“又到吃饭时间了[微笑]我们去吃饭吧,好不好?ok123”想把它分成“又到吃饭时间了”、“[微笑]”、“我们去吃饭吧,好不好?”、“123”,该怎么写正则表达式?
|
|
比如有一个字符串“又到吃饭时间了[微笑]我们去吃饭吧,好不好?ok123”想把它分成“又到吃饭时间了”、“[微笑]”、“我们去吃饭吧,好不好?”、“ok”、“123”,该怎么写正则表达式?
|
|
没看出来规则是什么? |
|
static void RegexSplit() { string txt = @"又到吃饭时间了[微笑]我们去吃饭吧,好不好?ok123"; var arr = Regex.Split(txt, @"(\b(?=\[)|(?<=\])\b)|((?<=[,?])\b)"); foreach (var str in arr) { Console.WriteLine(str); } } ok123不分了 |
|
我自己在否面加了把字母和数字分开的表达式(\b(?=\[)|(?<=\])\b)|(?=[1-9]d*$\b)|(?=[a-zA-Z]),但是效果不太对 |
|
txt = @”[微笑]又到123吃饭时间了ok[微笑]我们去吃饭吧,好不好?ok123″想把中文、英文、数字、还有含有[]都分别分开的 |
|
static void RegexSplit() { string txt = @"又到吃饭时间了[微笑]我们去吃饭吧,好不好?ok123"; var arr = Regex.Split(txt, @"(?=\[)|(?<=\])|(?<=[,?])|(?<=[a-zA-Z])(?=\d)"); foreach (var str in arr) { Console.WriteLine(str); } } 这已经是完全按你字符串定制了…… |
|
static void RegexSplit() { string txt = @"又到吃饭时间了[微笑]我们去吃饭吧,好不好?ok123"; var arr = Regex.Split(txt, @"(?=\[)|(?<=\])|(?<=[,?])|(?<=[a-zA-Z])(?=\d)"); foreach (var str in arr) { Console.WriteLine(str); } } 嗯嗯,非常感谢大神的帮助,把中文、英文、数字、还有含有[]混排的字符串都分别按照中文、英文、数字、还有含有[]分开的应该怎样做呢?eg:”[微笑]又到123吃饭时间了ok[微笑]123我们去吃饭吧,好不好?ok123″ |
|
按中文,数字,英文还好办,其它的没办法……
[a-zA-Z]+|\d+|[\u4e00-\u9fa5]+ 其它的符号不知道你想干嘛了 |
|
分开成:分开成为“[微笑]“、”又到“、“123”、”吃饭时间了“、”ok“、”[微笑]“、”123“、”我们去吃饭吧,好不好?“、”ok“、123” |
|
20分 |
string s = @"[微笑]又到123吃饭时间了ok[微笑]123我们去吃饭吧,好不好?ok123"; MatchCollection match = Regex.Matches(s, @"\[.*?\]|[a-zA-Z]+|[0-9]+|[\u4e00-\u9fa5].*?(?=[a-zA-Z0-9|\[])"); foreach (Match m in match) { Console.WriteLine(m.Value); } |