我有一个关键字,例如,“SOS火灾”。我想在使用Regex的列表中找到它。当我直接定义时,它可以很好地工作,但似乎它没有传递keyword
的引用。
//2023 - 07 - 07 14:30:27,266 | datatemp 1 | datatemp x | SOS fire //match
//2023 - 07 - 07 14:30:27,266 | datatemp 2 | datatemp y | Data SOS beach //not match
//2023 - 07 - 07 14:30:27,266 | datatemp 3 | datatemp z | SOS fire homes //match
var str = "2023-07-07 14:30:27,266|datatemp 1|datatemp x |SOS fire \r\n2023-07-07 14:30:27,266|datatemp 2|datatemp y |Data SOS beach \r\n2023-07-07 14:30:27,266|datatemp 3|datatemp z |SOS fire homes ";
var list = str.Split(new string[] { "\r\n" }, StringSplitOptions.None).ToList();
var keyword = "SOS fire";
var count = 0;
foreach (var item in list)
{
if (Regex.IsMatch(item.TrimStart().TrimEnd(), @"\|(.+?)\|(.+?)\|\b("" + keyword + "")\b"))
{
count += 1;
}
}
字符串
对这个案子有什么想法,给予我点建议。我试过这个选项,可以找到:
的数据
1条答案
按热度按时间uemypmqf1#
如果你尝试打印出字符串字面量,你会看到结果:
|(.+?)|\B(“+关键字+“)\b|\b(" + keyword + ")\b
没有正确的方法来分配字符串文字的值。你应该使用
String.Format()
。字符串
并声明已编译的正则表达式,而不是在循环中每次都创建未编译的正则表达式,以提高性能。标签:正则表达式缓存
型