asp.net - 从句子中正确提取字符串
问题描述
我一直在研究这个问题一段时间,我希望我能得到一些解决方案。
我有一个句子,其中包含我想提取的关键信息。
提取这些字符串后,我会将它们保存为一个数组,然后将这些字符串与我的数据库中存在的字符串进行比较。
我遇到的问题是成功提取字符串。
例如,我有这句话:
These are a list of automobiles along with their production dates: AC 3000ME (1979-1984), AC Shelby-Cobra (1961-2004), AC Frua (1965-1973)
.
我想提取:3000ME
、、Shelby-Cobra
和Frua
。
下面是代码:
public string CarModelMethod()
{
string sentence = "These are a list of automobiles along with their production dates: AC 3000ME (1979-1984), AC Shelby-Cobra (1961-2004), AC Frua (1965-1973)";
string[] array = sentence.Split(',');
CarModel carModel = new CarModel();
foreach(var item in array)
{
var carDataSource = _context.CarTable.Where(x => EF.Functions.Like(x.CarModelName, $"%{item}%")).Select(x => x.CarId);
foreach(var id in carDataSource)
{
carModel.CarId = id;
_context.CarModel.Add(carModel);
_context.SaveChanges();
}
}
return null;
}
解决方案
您可以使用
var results = Regex.Matches(text, @"\bAC\s+(.*?)\s+\(")
.Cast<Match>()
.Select(x => x.Groups[1].Value)
.ToList();
细节
\b
- 单词边界AC
-AC
一句话\s+
- 1+ 空格(.*?)
- 第 1 组(.Groups[1].Value
将保存此子匹配):除换行符之外的任何 0 个或更多字符,尽可能少(*?
惰性量词也是如此)\s+
- 1+ 空格\(
- 一个(
字符。
请参阅正则表达式演示: