[英]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.