[英]Regex for multiline header c#
我是一名新的C#程序员。 我正在尝试制作一个简单的C#应用程序,如果该格式为,则会从pdf文件(书)中提取标头:
1.1电气/电子行业
1.2简要历史
1.3测量单位
我正在使用代码:
string pattern = @"(\d+)(\.)(\d+) ([A-Z]+).([A-Z]+).([A-Z]+).([A-Z]+).([A-Z]+)";
Regex.match(strText,pattern);
它对单行标题有效,但对两行/多行标题无效。 有人可以帮忙吗?
我不熟悉C#样式的正则表达式,但不是.
是否有任何字符匹配(换行符除外)?
如果您需要换行,则还必须在末尾添加实际的\\n
,可能带有?
除非您也计划有其他选择。
但令我感到惊讶的是,除非书的格式恰好是完美的,否则此正则表达式不会引起任何问题。
假设您已经用单个字符串获取了所需的目录,并且唯一的问题是解析第二级标头。
修改正则表达式以仅匹配大写字母。
您可以使用以下代码获得所需的结果:
string pattern = @"((\d+\.\d+) ([A-Z\s]+)\n)+";
var match = Regex.Match(input, pattern);
var headers = new List<string>();
for (var i = 0; i < match.Groups[1].Captures.Count; i++)
{
headers.Add(match.Groups[1].Captures[i].Value);
}
之后, headers
将包含所有必需的数据。
假设input
包含输入数据。 另外,请注意\\n
是换行符。
您的正则表达式已简化。
(\\d+\\.\\d+)
代表“一个或多个数字字符”,点,“一个或多个数字字符”,空格的序列。
([AZ\\s]+)\\n
“一个或多个大写字母或空格”,“换行符”
另外,请阅读以下文章以熟悉C#正则表达式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.