【问题标题】:Regex to get everything after the first space正则表达式在第一个空格之后获取所有内容
【发布时间】:2013-04-13 12:12:43
【问题描述】:

在第一个空格之后获取字符串中所有单词的语法是什么。例如,鲍勃漂亮的房子。所以结果应该是没有引号的“nice house”。

([^\s]+) 给了我所有 3 个由 ; 分隔的单词

,[\s\S]*$ > 未编译。

【问题讨论】:

    标签: c# regex string


    【解决方案1】:

    我真的在寻找尽可能短的代码。以下完成了这项工作。谢谢大家

    \s(.*)
    

    【讨论】:

    • 只要您知道\s 匹配所有空格,而不仅仅是空格
    【解决方案2】:

    我认为应该这样做:

    [^ ]* (.*)
    

    它允许 0 个或更多不是空格的元素,而不是单个空格,并选择该空格之后的任何内容。

    C# 用法

    var input = "bobs nice house";
    
    var afterSpace = Regex.Match(input, "[^ ]* (.*)").Groups[1].Value;
    

    afterSpace"nice house"

    要在结果字符串中也获得第一个空格,请将表达式更改为[^ ]*( .*)

    没有正则表达式解决方案

    var afterSpace = input.Substring(input.IndexOf(' '));
    

    【讨论】:

    • 这与输入字符串相同
    • 我问的是 c# 代码,而不是你在其中使用的正则表达式。请您编辑您的问题并将其显示在此处吗?
    • @torres 结果存储在第一个捕获组(索引 1)中。你可以这样理解:matchObj.Groups[1].Value
    【解决方案3】:

    实际上,您不需要为该过程使用正则表达式。你只需要像这样使用String.Split() 方法;

    string s = "bobs nice house";
    string[] s1 = s.Split(' ');
    for(int i = 1; i < s1.Length; i++)
        Console.WriteLine(s1[i]);
    

    输出将是;

    nice
    house
    

    这是DEMO

    【讨论】:

      【解决方案4】:

      使用/(?&lt;=\s).*/g在第一个空格后查找字符串。运行sn -p检查

      str="first second third forth fifth";
      str=str.match(/(?<=\s).*/g)
      console.log(str);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-15
        • 1970-01-01
        • 2017-10-28
        • 1970-01-01
        • 1970-01-01
        • 2019-01-10
        相关资源
        最近更新 更多