簡體   English   中英

多行標題C#的正則表達式

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM