我有一個很長的文本,我需要從中提取資料。我正在嘗試使用 RegEx,但收效甚微。我做了我的研究,嘗試了很多東西,但它不起作用。
該模式應該:
- 找到字串:“Adónem számlaszáma:”
- 之后回傳帳號
- 倒退直到第一個 3 位數字
- 回傳那個 3 個字母的代碼
- 回傳此代碼和第一個字串之間的文本
部分文字:
Id?szak: 2021.01.01-2021.11.24
/
101 Társasági adó Adónem számlaszáma: 10032000-01076019
2021.01.01.
Nyitóegyenleg
使用的圖案:
*Flags used: global, single line*
(\b\d\d\d\b)( .*?)Adónem számlaszáma: (.*?)\n
匹配很好:

正文的另一部分:
-13 000
101 adónemen t?bblet: 5 000 Ft
104 általános forgalmi adó Adónem számlaszáma: 10032000-01076868
使用相同的模式。
搭配不好:

這是我正在處理的完整檔案:samplefile.txt
我錯過了什么?我有懶惰的量詞,點匹配換行符等......提前謝謝你。
uj5u.com熱心網友回復:
如果您不需要跨行匹配,則可以使用
\b\d{3}\b\s*(.*?)\s*Adónem számlaszáma: (\S*)
看到這個正則運算式在行動。
否則,您需要確保在 3 位數字和您的固定字串之間沒有其他 3 位數字:
\b\d{3}\b\s*((?:(?!\b\d{3}\b)[\s\S])*?)\s*Adónem számlaszáma: (\S*)
請參閱此演示。讓我解釋一下第二種模式,因為它更具體:
\b\d{3}\b- 用字邊界括起來的三位數字\s*- 零個或多個空格((?:(?!\b\d{3}\b)[\s\S])*?)- 第 1 組:任何字符 ([\s\S]),零次或多次重復,但盡可能少 (*?),不以包含單詞邊界的 3 位數字開頭Adónem számlaszáma:- 一個固定的字串(\S*)- 第 2 組:零個或多個非空白字符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/366149.html
