【问题标题】:Regex to extract string after a "|"正则表达式在“|”之后提取字符串
【发布时间】:2021-12-17 01:59:38
【问题描述】:

我是正则表达式的新手。我正在尝试提取字符串发布"|"。我有以下类型的字符串。

(String1) | (string2 string3)

我想使用C# 提取string2 and string3 的值。

我用过下面的正则表达式,但是没有用。

  1. @"*|(\S)"
  2. @"(?<=\|)(.*?)"

【问题讨论】:

  • 不需要正则表达式,使用 Split() 并获取第二个数组元素。
  • 你的意思是要匹配|之后括号之间的字符串吗?
  • 了解一下Split()
  • string result = source.Substring(source.IndexOf('|') + 1).Trim(' ', '(', ')');

标签: c# regex


【解决方案1】:

使用正则表达式,你可以使用

var text = "(String1) | (string2 string3)";
var result = Regex.Match(text, @"\|\s*\(([^()]*)\)")?.Groups[1].Value;
Console.WriteLine(result); // => string2 string3

另请参阅regex demo\|\s*\(([^()]*)\) 模式匹配 | 字符,然后是零个或多个空格 (,然后将除括号之外的任何零个或多个字符捕获到第 1 组,然后匹配 ) 字符。

没有正则表达式,如果字符串总是这样,你可以用空格+|+空格分割,得到第二项并剪掉()

var result2 = text.Split(new[] {" | "}, StringSplitOptions.None)[1].Trim(new[] {'(', ')'});
Console.WriteLine(result2); // => string2 string3

请参阅C# demo

【讨论】:

    【解决方案2】:

    这可以帮助你。 使用Split() 方法,该方法返回一个数组并取第二个元素[1]。

      public string ExtractString(string str)
        {
            return str.Split("|")[1].Trim('(',')');
        }
    

    祝你有美好的一天:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-22
      • 2011-12-05
      相关资源
      最近更新 更多