[英]Regular expression woes
我有以下數據,我想將其轉換為正則表達式。
棕櫚油Mal / Indo dlrs噸CIF鹿特丹
12月15日/ 1月16日890.00
1月16日/ 2月16日900.00 +10.00
我的以下代碼似乎無效。 首先,我如何確定890之后的格式是否為空,或者為+10.00或任何數字? 我嘗試使用?:但有時它會完全忽略我要捕獲的月份信息。在這種情況下,我不想捕獲+10.00或890或900價格后的任何字符。
(棕櫚油Mal \\ b)/(印度dlrs噸到岸價鹿特丹\\ b)\\ s *([^ \\ s] +)\\ s *(\\ d *。?\\ d *)\\ s *([^ \\ s] + | [+ \\ d *。?\\ d *])\\ s *(\\ d *。?\\ d *)\\ s *([^ \\ s] + |(?:[+ \\ d *。?\\ d *]))
對於帶有日期和價格的部分,此正則表達式處理示例字符串中的兩個變體。
Pattern pat = Pattern.compile(
"\\w{3}\\d{1,2}/\\w{3}\\d{1,2}" +
"\\s*(\\d+\\.\\d\\d)(\\s+\\+\\d+\\.\\d\\d)?" );
String s1 = "Dec15/Jan16 890.00";
String s2 = "Jan16/Feb16 900.00 +10.00";
Matcher m1 = pat.matcher( s1 );
if( m1.matches() )
System.out.println("m1 " + m1.group(1) + ":" + m1.group(2) );
Matcher m2 = pat.matcher( s2 );
if( m2.matches() )
System.out.println("m2 " + m2.group(1) + ":" + m2.group(2) );
輸出:
m1 890.00:null
m2 900.00: +10.00
沒有足夠的信息-所以我不知道/+10.00/?中的第三種選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.