[英]java regex to exclude specific weight from a larger string with date
我有一些線
“今天我們收到的商品為31.12.2014g。這些重量為31.12g(2014年3月23日)”
2014年12月31日g-這不是錯誤。 一些帶有日期標簽的文本帶有g字母(無空格)
我只需要從字符串中提取權重值(沒有日期值),但是我的正則表達式:
[0-9]+\\.[0-9]+g
也是約會日期:(
我的結果(兩組):
12.2014克
31.12g <-我只需要這個!!!
您可以在后面添加否定的外觀,以確保在您感興趣的部分之前沒有您不想要的東西
讓我們說出1到10之間的數字,然后加上點號
31.12.2014g ^^^
還要確保我們將匹配整個值,而不僅僅是部分匹配,以防萬一
31.12.2014g ^^^^^^^
在2.2014g
滿足先前負面觀察的條件的情況下,我們需要確保匹配的部分之前沒有任何數字
所以嘗試像
(?<!\\d{1,10}\\.)(?<!\\d)\\d+\\.\\d+g
BTW \\d
(在Java中寫為"\\\\d"
)表示[0-9]
。 您可以根據需要將其更改回去。
演示:
String data = "Today 31.12.2014g we receive goods. These weight is 31.12g (23.03.2014)";
Pattern p = Pattern.compile("(?<!\\d{1,10}\\.)(?<!\\d)\\d+\\.\\d+g");
Matcher m = p.matcher(data);
while(m.find())
System.out.println(m.group());
產量: 31.12g
您可以搜索空格:
\\s[0-9]+\\.[0-9]+g // -> " 31.12g"
…始終假設精確地有兩個小數位:
[^\\.][0-9]+\\.[0-9]{2}g // -> "31.12g"
(不過,如果日期拼寫為DD.MM.YYg,這將失敗。)
…或使用日期:
[0-9]?[0-9]\\.[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9][0-9]g?.+(\\b[0-9]+\\.[0-9]+g) // -> "31.12.2014g we receive goods. These weight is 31.12g", "31.12g"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.