簡體   English   中英

正則表達式,用於從Java字符串中提取單詞中指定的日期值

[英]Regular expression to extract Date value specified in word from the string in Java

我有日期列,其中包含以下示例值

  • 發表於20106月25日,下午1:01
  • 2011年3月14日
  • 2011年4月15日,星期五,上午12:15
  • 2011年3月31日 ,星期四,1:11pm
  • 更新時間: 2011年6月3日,上午9:34。

我想提取給定字符串中的日期(以粗體顯示),我可以得到一個正則表達式來檢測單詞中指定的日期。

謝謝!!

我想這取決於您需要表達的嚴格程度。 這將適用於您的所有示例:

/(January|February|March|April|May|June?|July|August|September|October|November|December)\\s(\\d\\d?).+?(\\d\\d\\d\\d)/

但是沒有執行stndrdth規則。

逗號也沒有強制執行,將日期與年份分開。

還有一個特殊情況,即六月的縮短(例如,示例5中有一個可選的6月的e ),但沒有考慮其他縮短的月份的名稱。

Firebug的示例輸出:

>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s1)
["June 25, 2010", "June", "25", "2010"]
>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s2)
["March 14, 2011", "March", "14", "2011"]
>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s3)
["April 15, 2011", "April", "15", "2011"]
>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s4)
["March 31st, 2011", "March", "31", "2011"]
>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s5)
["Jun 3, 2011", "Jun", "3", "2011"]

不要重新發明,因為它是一個相當普遍的問題,所以有很多程序可以滿足您的需求。 嘗試閱讀此http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/或僅瀏覽stackoverflow一點,您會發現很多!

/\w+\s\d+(st)?(nd)?(rd)?(th)?,\s+\d+/

更全面的正則表達式,可以接受與確切鍵入的月份不匹配但與“月份(可選)”,“年份”匹配的形式

請注意,您可能會看到以下內容:

Blah 45rd,2022222

而且它仍然會抓住它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM