正则表达式 Match/Wildcard
Regex Match/Wildcard
我有一个制表符分隔的文本文件,其中包含 comments/notes。
任何包含字符串“read”或“reading”的行 will/should 都有一个我要提取的 8 位数字。问题是我不知道 8 位数字在行中的什么位置。由于这些是用户生成的评论,每行可能不同。
来自文本文件的示例行:
3253442999934 did not read book # 98713429
我尝试过的:
var m = Regex.Match(realLine, @".*""reading"":""\b(?x)[0 - 9]{8}\b$"".*");
var n = Regex.Match(realLine, @".*""read"":""\b(?x)[0 - 9]{8}\b$"".*");
//string pattern = "\b\d{8}\b$";
Regex regex = new Regex(pattern);
console.WriteLine((m.Groups[1].Value));
console.WriteLine((n.Groups[1].Value));
我没有生成任何结果,这意味着控制台上没有打印任何内容。
您可以使用
var result = Regex.Match(realLine, @"\bread(?:ing)?\b.*?#\s*(\d+)")?.Groups[1].Value;
正则表达式详细信息
\b
- 单词边界
read(?:ing)?
- read
或 reading
\b
- 单词边界
.*?
- 除换行符外的零个或多个字符,尽可能少
#
- 一个 #
字符
\s*
- 零个或多个空格
(\d+)
- 第 1 组:一个或多个数字。
实际上 return 组 1 值,使用 Regex.Match(realLine, @"\bread(?:ing)?\b.*?#\s*(\d+)")?
,如果不匹配,将 return 为空字符串,否则,.Groups[1].Value
当前匹配对象的 returned.
我有一个制表符分隔的文本文件,其中包含 comments/notes。
任何包含字符串“read”或“reading”的行 will/should 都有一个我要提取的 8 位数字。问题是我不知道 8 位数字在行中的什么位置。由于这些是用户生成的评论,每行可能不同。
来自文本文件的示例行:
3253442999934 did not read book # 98713429
我尝试过的:
var m = Regex.Match(realLine, @".*""reading"":""\b(?x)[0 - 9]{8}\b$"".*");
var n = Regex.Match(realLine, @".*""read"":""\b(?x)[0 - 9]{8}\b$"".*");
//string pattern = "\b\d{8}\b$";
Regex regex = new Regex(pattern);
console.WriteLine((m.Groups[1].Value));
console.WriteLine((n.Groups[1].Value));
我没有生成任何结果,这意味着控制台上没有打印任何内容。
您可以使用
var result = Regex.Match(realLine, @"\bread(?:ing)?\b.*?#\s*(\d+)")?.Groups[1].Value;
正则表达式详细信息
\b
- 单词边界read(?:ing)?
-read
或reading
\b
- 单词边界.*?
- 除换行符外的零个或多个字符,尽可能少#
- 一个#
字符\s*
- 零个或多个空格(\d+)
- 第 1 组:一个或多个数字。
实际上 return 组 1 值,使用 Regex.Match(realLine, @"\bread(?:ing)?\b.*?#\s*(\d+)")?
,如果不匹配,将 return 为空字符串,否则,.Groups[1].Value
当前匹配对象的 returned.