[英]get the substring using regular expression in java
我有以下格式的字符串集
Local Tax 02/07 02/14 -0.42
我想將以上內容拆分為三個單獨的字符串,例如
Local Tax
02/07 02/14
-0.42
我寫了以下代碼片段
package com.demo;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DemoClass {
/**
* @param args
*/
public static void main(String[] args) {
String s ="Sales Tax 08/07 09/06 0.42";
//String s1 = "Sales Tax 02/07 02/14 -1.02";
Pattern pattern = Pattern.compile("^([a-zA-Z ]*) ([0-9]{2}/[0-9]{2} [0-9]{2}/[0-9]{2}) ([-[0-9]*.[0-9][0-9]|[0-9]*.[0-9][0-9]])");
Matcher matcher = pattern.matcher(s);
if (matcher.find()) {
System.out.println("String Name::"+s);
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));
}
}
}
我得到的輸出為
String Name::Sales Tax 08/07 09/06 0.42
Sales Tax
08/07 09/06
0
matcher.group(3)應該返回0.42,但顯示為0。請對此有所幫助。
這將給出0.42的響應。
Pattern pattern = Pattern.compile("^([a-zA-Z ]*) ([0-9]{2}/[0-9]{2} [0-9]{2}/[0-9]{2}) ([0-9]*.[0-9][0-9]|[0-9]*.[0-9][0-9])");
如果您的第3個值始終以“-”號開頭,則可以嘗試一下。
String test = "Local Tax 02/07 02/14 -0.42";
Pattern pattern = Pattern.compile("((?<=\\p{Alpha})\\s(?=\\d))|((?<=\\d)\\s(?=-\\d))");
String[] result = pattern.split(test);
for (String partial: result) {
System.out.println(partial);
}
編輯如果您的第三個值不一定是負數,請嘗試以下操作(相同的輸出):
String test = "Local Tax 02/07 02/14 -0.42";
Pattern pattern = Pattern.compile("((?<=\\p{Alpha})\\s(?=\\d))|((?<=\\d)\\s(?=\\p{Punct}?[\\d\\.]+?$))");
String[] result = pattern.split(test);
for (String partial: result) {
System.out.println(partial);
}
輸出:
Local Tax
02/07 02/14
-0.42
您可以使用此正則表達式:
^([a-zA-Z ]*) (\\d{2}/\\d{2} \\d{2}/\\d{2}) (-?\\d+(?:\.\\d{2})?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.