6

I'm looking to figure out the answer to this problem here.

First off,

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

Can someone explain to me what the (.*), $2 and $1 are?

Secondly, when I nest that within a for statement in order to reverse two parts of a string, I am hit with an exception error. I was wondering if anybody knew why that is.

Thanks

Edit: This is the error I receive

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at ChangeNames.main(ChangeNames.java:21)

2 Answers 2

11

(.*) - would be a pattern to match any number of characters. Parentheses would be to mark it as a sub pattern (for back reference).

$2 & $1 - are back references. These would be things matched in your second and first sub pattern.

Basically replaceAll("(.) (.)", "$2, $1") would find characters separated by a space, then add a comma before the space, in addition to flipping the parts. For example:

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

Not sure about nesting... Can you post the code you're running?

Sign up to request clarification or add additional context in comments.

Comments

-1

Your regular expression "(.)(.)" will be of this sort : "(x)(y)" this will be replaced by "$2,$1.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.