0

このような3つの列を持つデータセットがあります

Col1、Col2、Col2

aaa、アリゾナ DL USA、12

bbb、アイダホ DL USA、35

ccc、アイダホ DL USA、28

ddd、ウィスコンシン DL USSTATES、11

eeee、ウィスコンシン DL 米国、35

私がやりたいことは、2 番目の列の最初の単語 (州名とは) を抽出し、それを最初の列に入れたいということです。

期待される出力:

アリゾナ、アリゾナランダムUSA、12

アイダホ州、アイダホランダムUSA、35

アイダホ、アイダホ、ランダム、USA、28

ウィスコンシン、ウィスコンシン ランダム USSTATES,11

私が持っている正規表現は

^[^,]+,([^ ]+) [^\n]+$

() を使用して州名を抽出できますが、出力を取得するにはどうすればよいですか? 私が欲しいのは、ネストされた括弧、このようなものです

^[^,]+,(([^ ]+) [^\n]+)$

出力は \1,\2 になります

正規表現の置換のみを使用してそれを行いたいことを指摘する必要があります。

編集:

正規表現を使用して列内のすべての州名を取得してからマージすることで解決しましたが、ここで使用できる高度な正規表現があるかどうかを知りたいです。

4

2 に答える 2

2
String s = "aaa,Arizona DL USTATES,12";

String st = s.split(",")[1].split(" ")[0];
s = s.replaceFirst("\\w+\\,", st + ",");
于 2013-02-05T17:26:30.170 に答える
1

Your regex with nested parentheses works fine; you just need to use String's replaceFirst method and note that Java uses $ for group references. Also note that the groups are enumerated in the order they occur in the regex, so the outer group is $1 because it starts first:

String line = "aaa,Arizona DL USTATES,12";
String result = line.replaceFirst("^[^,]+,(([^ ]+) [^\n]+)$", "$2, $1");
// result is "Arizona, Arizona DL USTATES,12"
于 2013-02-05T17:33:50.083 に答える