繁体   English   中英

使用正则表达式分割字符串:* category ** bob *!cookshop

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM