我的一個朋友說如果我使用的正則表達式太長,這可能是工作的錯誤工具。有沒有更好的方法來解析這些文字?我有一個正則表達式,可以將所有內容都返回給一個數組,我可以很容易地將它們分塊,但如果還有另一種更簡單的方法,我真的很想看到它。如何解析這個沒有正則表達式?
這裏是什麼樣子:
2 AB 123A 01JAN M ABCDEF AA1 100A 200A 02JAN T /ABCD /E
這裏有一個突破下來:
2
是行號,這些範圍從1
一路99
。如果無法看到,因爲格式化的,有大於10的空間可以或可以不通過
*
AB
替換是數據的重要單元更小的空間性格特徵預謀號碼(UOD )。AB
可能由/CD
作爲前綴,這是另一個重要的UOD。123
是一個重要的UOD。它的範圍可以從1
(前面4個空格)到99999
。A
是一個重要的UOD。01JAN
是日/月組合,我需要提取兩個UOD。M
是日期簡稱。這可能是1
和7
之間的數字。ABC
是一個重要的UOD。DEF
是重要的UOD。DEF
後的空間可以是一個*
AA1
可以是零個字符,或者它可以是5.是不重要的。100A
是時間戳,但可能是格式爲1300
。當時間爲1200
或P
PM時,A
可能爲N
。然後我們看到另一個時間戳。
下一日期部分可以不存在,例如,這是有效的:
93*DE/QQ51234 30APR J QWERTY*QQ0 1250 0520 /ABCD*ASDFAS /E
其中
/ABCD*ASDFAS /E
顯示的數據是無關的應用程序,但是,這是第二個日期戳可以在那裏出現。正斜線可能是別的東西(比如字母)。
注:
它不是空格分隔,身體的某些部位碰到別人。字符位置只針對列表中的前兩個或三個項目準確
我不認爲我遺漏了任何東西,但是,如果有更簡單的方法解析像這樣的字符串,而不是編寫正則表達式,請讓我知道。
這是功課嗎? – Tejs 2011-04-15 19:58:56
http://en.wikipedia.org/wiki/Finite-state_machine – 2011-04-15 19:59:01
這不是家庭作業,這是一個遺留系統的屏幕刮擦。 http://www.scribd.com/doc/24980105/Mysabre-Manual(參見第35頁) – Incognito 2011-04-15 19:59:34