文字に基づいてトークン化する文字列があります,
。ここでの問題は、文字列がこのようなものであるということです
-123 abc, 234 def (2,3,4), -456 zyx (4,5,6) and xyz (6,5,4), 789 final!
トークン化した後の出力は次のようになります...
-123 abc
234 def (2,3,4)
-456 zyx (4,5,6) and xyz (6,5,4)
789 final!
このための正規表現を書く方法は?TIA。
数字を付けずに「、」でパターンマッチを試すことができます。
Pattern pattern = Pattern.compile("^[\\d][,]^[\\d]");
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
//Here you know where you have the separating ,
start = matcher.start();
または、「、」でトークン化するのはどうですか?の後にスペースが常にあることを願って、トークン化します。
String test = "-123 abc, 234 def (2,3,4), -456 zyx (4,5,6) and xyz (6,5,4), 789 final!";
String[] tokens = test.split(", ");
System.out.println(Arrays.toString(tokens));
これは、次のように単純に機能する可能性があります。
var string = "-123 abc、234 def(2,3,4)、-456 zyx(4,5,6)and xyz(6,5,4)、789 final!";
var tokens = string.split('、'); console.log(tokens); </ p>
デモ: http: //jsfiddle.net/HQgV8/
もう1つの方法は、
Pattern p = Pattern.compile(", +");
for(String my : p.split("-123 abc, 234 def (2,3,4), -456 zyx (4,5,6) and xyz (6,5,4), 789 final!"))
System.out.println(my);
これにより、先頭に空白(1つ以上)が付いたコンマが検索されます。