正则表达式使用前面带有特定字符的字符来分割字符串

时间:2012-08-16 04:28:03

标签: c# .net regex string-split

我有一个字符串,我希望使用一个以特定字符开头的字符进行拆分

Foo:xxxxxxxxx:Bar:xxxxxxxx:FooBar:xxxxxxx

我想在:之后使用冒号x拆分它。

我尝试x:,但它删除了最后x

我知道我可以使用这个正则表达式,然后在每个拆分字符串中附加x,但有没有办法使用正则表达式拆分此字符串,以便最后x也存在。

4 个答案:

答案 0 :(得分:3)

尝试 lookbehind assertion

(?<=x):

和您的代码如下:

var result = Regex.Split(inputString, "(?<=x):");

解释

(?<= subexpression)
Zero-width positive lookbehind assertion.

示例:如果您在

上应用(?<=19)\d{2}正则表达式

1851 1999 1950 1905 2003结果是

995005

答案 1 :(得分:2)

零宽度正面观察断言。

(?<=x):

答案 2 :(得分:1)

var list = Regex.Split("Foo:xxxxxxxxx:Bar:xxxxxxxx:FooBar:xxxxxxx", "(?<=x):");

根据sbutler的说法,它使用积极的lookbehind。

答案 3 :(得分:1)

在C#的Regex.Split方法中使用正面lookbehind:

string[] substrings = Regex.Split("Foo:xxxxxxxxx:Bar:xxxxxxxx:FooBar:xxxxxxx", "(?<=x):");