除了首先使用正则表达式之外如何返回字符串的所有行,或者在第一个数字后返回所有文本?

时间:2014-07-09 06:41:42

标签: c# regex string

我有一个这样的字符串:

Number: 2
blah one
blah two
blah three

我希望最终结果是:

blah one
blah two
blah three

如何使用正则表达式实现此目的?我使用什么模式?

只是一次更新:我知道这可以通过不使用RegEx的C#实现来实现。但是我有使用正则表达式的限制,因为这是一个内部软件,它将作为脚本运行。我可以使用grp1 = Regex.Match(,)。组并使用grp1 [0] .Value

访问它

4 个答案:

答案 0 :(得分:1)

您可以尝试使用此正则表达式匹配除以Number

开头的所有行之外的所有行
^(?!Number).*

DEMO

<强>更新

如果您输入的字符串包含此字符Number: 2\nblah one\nblah two\nblah three,那么您可以使用以下正则表达式匹配除Number 2以外的所有字词

(?<=\\n)([^\\]*)

DEMO

答案 1 :(得分:1)

   string abc = @"Number: 2
 blah one
 blah two
blah three".Trim();

    try
    {
        Regex RegexObj = new Regex("^.*?\\n(?<data>(.|\\n)*)");
        TextBox1.Text = RegexObj.Match(abc).Groups["data"].Value;

    }
    catch (ArgumentException ex)
    {

        // Syntax error in the regular expression
    }

答案 2 :(得分:1)

如果我理解正确,你有一个由多行组成的字符串,这意味着它可以写成"Number: 2\nblah one\nblah two\nblah three",(\n是换行符)。您可以在换行符中使用换行符作为常规字符。这为您提供了很多实现目标的选择,我将列出最简单的两个:

  1. 将您的字符串转换为数组,其中每个元素都是一行。

    string input = "Number: 2\nblah one\nblah two\nblah three";
    string[] lines = input.Split('\n');
    

    您可以选择在程序中使用哪些行。

  2. 获取包含除数字之外的所有内容的子字符串。

    string input = "Number: 2\nblah one\nblah two\nblah three";
    string inputWithoutNumber = input.Substring(input.IndexOf('\n') + 1);
    

    并在程序的其余部分使用新字符串。

  3. 希望这就是你要找的东西。

答案 3 :(得分:1)

使用您的新规范,这对我有用:

string input = "Number: 2\nblah one\nblah two\nblah three";
string patern = @"(?ms)^(?!Number: \d+$).*";

GroupCollection grps = Regex.Match(input, patern).Groups;

现在grps[0].Value包含blah one\nblah two\nblah three