2020年2月19日 星期三

Backreference in a regular expression

通常我們在使用正規表示法(Regular expression)的時候,如果需要讓前面出現的字串與後面字串相符,就需要使用反向參考(Backreference)來達成

像是日期格式中如果使用分隔符號則我們通常會預期是相同符號(EX: 2020-02-19 or 2020/2/19)
如果要透過正規表示法做到這樣功能,就可以透過反向參考來達成

底下的pattern就是我用來 parse 日期的範例

((19[7-9]\d|20\d{2})|\d{2})([- /.])(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?|([0]?[0-9]{1}|[1]{1}[0-2]{1}))\3([0]?[0-9]{1}|[1-2]{1}[0-9]{1}|[3]{1}[0-1]{1})

\3是依據pattern中括號分組出現的位置來決定

參考出處:請點我

沒有留言:

張貼留言