| Author |
java regex
|
joe nesbitt
Greenhorn
Joined: Dec 05, 2009
Posts: 17
|
|
Hi all,
I am new to java 6 regex.
I have a string with the following content ( each line separated by \r\n).
Existing string:
aaaa|
TEST|x||y|z|""|cccc|bbb|"
xxxx|
TEST|x||y|z|Something|cccc|bbb|";
TEST|x|ST|y|z|""|cccc|bbb|";
TEST|x||y|z|""XYZ|cccc|bbb|";
TEST|x||y|z|Y""|cccc|bbb|";
The expected strign content:
aaaa|
TEST|x||y|z||cccc|bbb|
xxxx|
TEST|x|ST|y|z|Something|cccc|bbb|
TEST|x|ST|y|z|""|cccc|bbb|
TEST|x|ST|y|z|""XYZ|cccc|bbb|
TEST|x|ST|y|z|Y""|cccc|bbb|
Basically, if the content between 2nd and 3rd occurance of | is blank and if the content betweeen 5th and 6th occurance of | is "", then make it blank.(Ex: Line 2 in the EXISTING STRING)
Also if the content between 5th and 6th occurrence is not empty and not "" then if the content between 2nd and 3rd occurance of | is blank make it ST.(eX: Line 4,6,7 in existing string)
In other scenarios, nothing needs to be changed.
How to make it possible with Regex replaceall or Pattern/match.
I tried few things but in vain. - str.replaceAll( "(TEST\\\\|[\\|\\|]*\\\\|\\\\|[\\|\\|]*\\\\|[\\|\\|]*\\\\|)\"\"\\|", "$1\\|" ); - I t does not work for 4,6,7 lines/scenarios.
Please help as I have a dealine to meet.
Thanks a ton in advance.
|
 |
Darryl Burke
Bartender
Joined: May 03, 2008
Posts: 4167
|
|
Rehash and virtually a double post of http://www.coderanch.com/t/511294/java/java/java-regex (only replacing the caret with the pipe character).
edit BeForthrightWhenCrossPostingToOtherSites
http://www.java-forums.org/advanced-java/32834-regex-search-replace.html
|
luck, db
There are no new questions, but there may be new answers.
|
 |
joe nesbitt
Greenhorn
Joined: Dec 05, 2009
Posts: 17
|
|
Any help please!
|
 |
joe nesbitt
Greenhorn
Joined: Dec 05, 2009
Posts: 17
|
|
How to check if the content between 5th and 6th occurence of | has alphanumeric content and then check if the content between 2nd and 3rd | is empty, if so, make it STR.
My current regex is replacing all empty positions with STR. But I need it to change it only between 2nd and 3rd position.
Regex I am using:
(STR\\|[\\|\\|]*\\\\|)\\|\\|", "$1|STR|" );
The current (wrong output):
TEST|x|STR|y|z|Y""|cccc|bbb|STR|"
Any help is appreciated.
|
 |
 |
|
|
subject: java regex
|
|
|