0

我有这样的数据集,有三列

Col1、Col2、Col2

aaa,亚利桑那州 DL 美国,12

bbb,爱达荷州 DL 美国,35

ccc,爱达荷州 DL 美国,28

ddd,威斯康星州 DL 美国,11

eeee,威斯康星州 DL 美国,35

我想要做的是我想提取第二列的第一个单词(什么是州名)并将其放在第一列中。

预期输出:

亚利桑那州,亚利桑那州兰丹美国,12

爱达荷州,爱达荷州兰丹美国,35

爱达荷州,爱达荷州兰丹美国,28

威斯康星州,威斯康星州随机美国,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

带有嵌套括号的正则表达式可以正常工作;您只需要使用String'replaceFirst方法并注意 Java$用于组引用。另请注意,这些组是按照它们在正则表达式中出现的顺序枚举的,所以外部组是$1因为它首先开始:

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 回答