我有一份共同基金清单,我需要从中提取股票代码。列表是这样的:
FID SEL TELECOMM (FSTCX)07/29/1985 FID SEL UTILITIES (FSUTX)12/10/1981 SPTN REAL ES IDX ADV (FSRVX)09/08/2011 SA EMERGING MKTS FOF (FLILX)05/02/2012 SA INTL MULTI MGR (FMJDX)05/02/2012 FID ASSET MGR 85% (FAMRX)09/24/1999
我需要从坐在parens()中的每一行拉出5个字符。然后我要写一个新文件,但是现在我似乎无法返回自动收报机(parens之间的字符)。我应该得到:
FSTCX FSUTX FSRVX FLILX FMJDX FAMRX
相反,它返回整行。这就是我所拥有的(在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();
}
}
答案 0 :(得分:2)
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)
(也许)
答案 1 :(得分:2)
Regex + Linq
string input = File.ReadAllText("C:\\MyDocuments\\TickerList.txt");
var values = Regex.Matches(input, @"\((.+?)\)").Cast<Match>()
.Select(m => m.Groups[1].Value)
.ToList();
答案 2 :(得分:1)
答案 3 :(得分:1)