6

我想在这里找出这个问题的答案。

首先,

blah[abc] = blah[abc].replaceAll("(.*) (.*)", "$2, $1");

有人可以向我解释 (.*)、$2 和 $1 是什么吗?

其次,当我将它嵌套在 for 语句中以反转字符串的两个部分时,我遇到了异常错误。我想知道是否有人知道这是为什么。

谢谢

编辑:这是我收到的错误

线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 1 在 ChangeNames.main(ChangeNames.java:21)

4

2 回答 2

11

(.*) - 将是匹配任意数量字符的模式。括号将其标记为子模式(用于反向引用)。

$2 & $1 - 是反向引用。这些将是您的第二个和第一个子模式中匹配的内容。

基本上 replaceAll("(. ) (. )", "$2, $1") 会找到用空格分隔的字符,然后在空格前添加一个逗号,除了翻转部分。例如:

a b => b, a
Hello world => Hellw, oorld

不确定嵌套...您可以发布您正在运行的代码吗?

于 2011-03-04T03:52:09.847 回答
-1

你的正则表达式 "(.)(.)" 将是这样的: "(x)(y)" 这将被 "$2,$1.

于 2011-03-04T03:53:54.040 回答