我困在一個正則表達式操作中。我想寫一個可選的表達式找到日期字符串可選的正則表達式操作
我有三根弦A,B和C如下
a = '(sam was born on 11 Oct 1990)'
b = 'sam was born on Oct 1990'
c = 'sam was born on 1990'
給我想寫的表達,從而爲
a I get output '11 Oct 1990'
b I get output 'Oct 1990'
c I get output '1990'
我能夠爲a和b獲取正確的輸出,但對於c我無法。但是,當我改變c爲
c = 'sam was born on 1990' -- with two spaces between on and 1990
我獲取正確的輸出。我用
的正則表達式是:
print re.findall(r"((11)?[\s\(](((Nov|Oct))?([\s\(-]|,\s)(1990|1991)))", a)
我取的輸出是:
Output for a : [('11 Oct 1990', '11', 'Oct 1990', 'Oct', 'Oct', ' ', '1990')]
Ouptut for b : [(' Oct 1990', '', 'Oct 1990', 'Oct', 'Oct', ' ', '1990')]
Ouptut for c : []
任何幫助,將不勝感激。謝謝
看看有助於你設計正則表達式的網站,例如regex101.com – asimoneau
不要浪費你的時間在線正則表達式網站,特別是regexr.com和regex101.com。他們臃腫,緩慢,並加載錯誤。 – sln