[英]Splitting a string using regex: *category**bob*!cookshop
到目前为止,这是我一直在尝试的方法。 基本上,我想分割字符串但保留分隔符。 我的正则表达式知识非常有限,但是我一直在尝试使用正向查找来匹配表达式。 每当我尝试在字符串拆分中引入\\*1
,它都会变得很糟糕,因此我不确定该怎么办以及是否可行。
var tests = new List<string>
{
"*foo**bar*!bob",
"*foo*!42",
"!foo*bar*"
};
foreach (var expression in tests)
{
var strings = Regex.Split(expression, @"(?=[!])");
Console.WriteLine(String.Join(Environment.NewLine, strings));
}
第一行:
*foo**bar*
!bob
第二行(按预期运行)
*foo*
!42
第三行
{EMPTY LINE}
!foo*bar*
但我想得到的回复是:
第一行
*foo*
*bar*
!bob
第二行-如上(正确)
第三行
!foo
*bar*
尝试这个...
var tests = new List<string>
{
"*foo**bar*!bob",
"*foo*!42",
"!foo*bar*"
};
foreach (var expression in tests)
{
var strings = Regex.Split(expression, @"(?=[!])|(\*[^\*]+\*)").Where(exp => !String.IsNullOrEmpty(exp));
Console.WriteLine(String.Join(Environment.NewLine, strings));
}
结果:
*foo*
*bar*
!bob
*foo*
!42
!foo
*bar*
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.