【问题标题】:Regex to split a string using a character preceded by a particular character正则表达式使用特定字符前面的字符拆分字符串
【发布时间】:2012-08-16 04:28:03
【问题描述】:
我有一个字符串,我想用一个特定字符开头的字符来分割它
Foo:xxxxxxxxx:Bar:xxxxxxxx:FooBar:xxxxxxx
我想在x 之后使用冒号: 来拆分它。
我尝试了x:,但它正在删除最后一个x。
我知道我可以使用这个正则表达式,然后在每个拆分的字符串中附加 x,但是有没有办法使用正则表达式拆分这个字符串,以便最后一个 x 也存在。
【问题讨论】:
标签:
c#
.net
regex
string-split
【解决方案1】:
试试lookbehind assertion:
(?<=x):
你的代码是这样的:
var result = Regex.Split(inputString, "(?<=x):");
解释:
(?<= subexpression)
Zero-width positive lookbehind assertion.
对于示例:如果您在
上应用
(?<=19)\d{2} Regex
1851 1999 1950 1905 2003结果是
99、50、05
【解决方案3】:
var list = Regex.Split("Foo:xxxxxxxxx:Bar:xxxxxxxx:FooBar:xxxxxxx", "(?<=x):");
根据 sbutler 的说法,它使用积极的后视。
【解决方案4】:
在 C# 的 Regex.Split 方法中使用正向回溯:
string[] substrings = Regex.Split("Foo:xxxxxxxxx:Bar:xxxxxxxx:FooBar:xxxxxxx", "(?<=x):");