查找括号之间的所有字符

本文关键字:字符 之间 查找 | 更新日期: 2023-09-27 18:10:03

我有一个共同基金列表,我需要从中提取股票代码。列表如下:

<>之前Fid sel telecom (fstcx) 1985年7月29日Fid sel utilities (fsutx)12/10/1981SPTN real es idx adv (fsrvx)09/08/2011Sa新兴的MKTS for (filx)05/02/2012Sa intl multi经理(fmjdx) 2012.05.02Fid资产经理85% (famrx) 1999年9月24日之前

我需要从每行中取出5个字符,这些字符位于父()中。然后我将写入一个新文件,但是现在我似乎不能只返回代码(双亲之间的字符)。我应该得到:

<>之前FSTCXFSUTXFSRVXFLILXFMJDXFAMRX之前相反,它返回整行。这是我用c#写的。
Regex pattern = new Regex(@"'(([A-Z]*)')");
StreamReader reader = new StreamReader("C:''MyDocuments''TickerList.txt");
string line;
while ((line = reader.ReadLine()) != null)                
{
    Match match = pattern.Match(line);
    if (match.Success)
    {
        Console.WriteLine(line);
        Console.ReadLine();
    }
}

查找括号之间的所有字符

Console.WriteLine(line);不涉及match

if (match.Success)
{
    Console.WriteLine(match.Groups[1].Value);
    Console.ReadLine();
}

您也可以使用File.ReadLines:

Regex pattern = new Regex(@"'(([A-Z]*)')");
for (var line in File.ReadLines(@"C:'MyDocuments'TickerList.txt")) {
    Match match = pattern.Match(line);
    if (match.Success) {
        Console.WriteLine(match.Groups[1].Value);
        Console.ReadLine();
    }
}

或者……

File.ReadLines(@"C:'MyDocuments'TickerList.txt")
    .Select(pattern.Match)
    .Where(m => m.Success)
    .Select(m => m.Groups[1].Value)

(可能)

Regex + Linq

string input = File.ReadAllText("C:''MyDocuments''TickerList.txt");
var values = Regex.Matches(input, @"'((.+?)')").Cast<Match>()
                .Select(m => m.Groups[1].Value)
                .ToList();

你的正则表达式应该是,

Regex pattern = new Regex(@"'(([^')]*)')");

演示

不要忘记打印匹配的组1

尝试下面的regex并获得匹配的组

'(('w+)')

演示

用于程序的字符串字面值:@"'(('w+)')"用于c#