查找括号之间的所有字符
本文关键字:字符 之间 查找 | 更新日期: 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#