我正在為他們的資料抓取 PDF 報告。我正在嘗試提取報告所依據的位置。我有一個帶有位置的字串,然后是一個滾動的 13 個月標題,如下所示:
header_line <- "Corp Dec '20 Jan '21 Feb '21 Mar '21 Apr '21 May '21 Jun '21 Jul '21 Aug '21 Sep '21 Oct '21 Nov '21 Dec '21"
我想提取從字串開頭到開頭可能出現的任何月份的所有字符因為它是一個滾動的 13 個月報告,它可能是該位置旁邊的任何月份縮寫。
我有這個適用于上面的例子,但我不確定如何用正則運算式創建一個“或模式”。我知道我可以通過回圈或應用函式來強制它,但我希望有一種不那么骯臟的方式。
stringr::str_extract(header_line, "[^Dec] ")
[1] "Corp "
uj5u.com熱心網友回復:
很難預測該位置可能出現的可能情況,但以下解決方案可能涵蓋了大部分情況。它將匹配 3 個字母字符之前的所有內容,后跟一個空格、撇號和 2 個數字。
str_extract(header_line, '^(.*?)(?=[a-zA-Z]{3}\\s\'\\d{2})')
測驗用例:
header_line <- "Corp Dec '20 Jan '21 Feb '21 Mar '21 Apr '21 May '21 Jun '21 Jul '21 Aug '21 Sep '21 Oct '21 Nov '21 Dec '21"
header_line2 <- "Corp multiple words Dec '20 Jan '21 Feb '21 Mar '21 Apr '21 May '21 Jun '21 Jul '21 Aug '21 Sep '21 Oct '21 Nov '21 Dec '21"
header_line3 <- "Corp multiple words 1 Dec '20 Jan '21 Feb '21 Mar '21 Apr '21 May '21 Jun '21 Jul '21 Aug '21 Sep '21 Oct '21 Nov '21 Dec '21"
header_line4 <- "Corp multiple 444 Dec '20 Jan '21 Feb '21 Mar '21 Apr '21 May '21 Jun '21 Jul '21 Aug '21 Sep '21 Oct '21 Nov '21 Dec '21"
str_extract(header_line, '^(.*?)(?=[a-zA-Z]{3}\\s\'\\d{2})')
[1] "Corp"
str_extract(header_line2, '^(.*?)(?=[a-zA-Z]{3}\\s\'\\d{2})')
[1] "Corp multiple words"
str_extract(header_line3, '^(.*?)(?=[a-zA-Z]{3}\\s\'\\d{2})')
[1] "Corp multiple words 1"
str_extract(header_line4, '^(.*?)(?=[a-zA-Z]{3}\\s\'\\d{2})')
[1] "Corp multiple 444"
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/410138.html
標籤:
上一篇:使用GQL更新DatastoreGoogleAppEngine中所有物體的Text屬性
下一篇:如何在可選塊中捕獲一個句點
