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

本文关键字:返回 第一个 数字 之后 文本 或者 正则表达式 何使用 字符串 | 更新日期: 2023-09-27 18:12:01

我有一个这样的字符串:

Number: 2
blah one
blah two
blah three

我希望最终结果是:

blah one
blah two
blah three

我如何使用正则表达式实现这一点?我用什么模式?

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

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

使用你们的新规格,我是这样做的:

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

如果我理解正确,您有一个由多行组成的字符串,这意味着它可以写成"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);
    

希望这就是你要找的

您可以尝试这个正则表达式来匹配除了以Number

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

演示

更新:

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

(?<=''n)([^'']*)
演示

   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
    }