【问题标题】: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.
    

    对于示例:如果您在

    上应用(?&lt;=19)\d{2} Regex

    1851 1999 1950 1905 2003结果是

    995005

    【讨论】:

      【解决方案2】:

      零宽度正向回溯断言。

      (?<=x):
      

      【讨论】:

        【解决方案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):");
          

          【讨论】:

            猜你喜欢
            • 2022-08-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-02-23
            相关资源
            最近更新 更多