我有一个字符串,我希望使用一个以特定字符开头的字符进行拆分
Foo:xxxxxxxxx:Bar:xxxxxxxx:FooBar:xxxxxxx
我想在:
之后使用冒号x
拆分它。
我尝试x:
,但它删除了最后x
。
我知道我可以使用这个正则表达式,然后在每个拆分字符串中附加x
,但有没有办法使用正则表达式拆分此字符串,以便最后x
也存在。
答案 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
结果是
99
,50
,05
答案 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):");