I have read similar questions to solve my problem, but without any solution. I'm having troubles extracting a group from the following string:
String str = "/a> ref|NP_010829.1| Irc4p [Saccharomyces cerevisiae S288c] >gi|74676333|sp|Q03036.1|IRC4_YEAST RecName: Full=Uncharacterized protein IRC4; AltName: Full=Increased recombination centers protein 4 >gi|1165295|gb|AAB64982.1| Ydr540cp [Saccharomyces cerevisiae] >gi|51012753|gb|AAT92670.1| YDR540C [Saccharomyces cerevisiae] >gi|151942499|gb|EDN60855.1| conserved protein [Saccharomyces cerevisiae YJM789] >gi|190404545|gb|EDV07812.1| conserved hypothetical protein [Saccharomyces cerevisiae RM11-1a] >gi|259145774|emb|CAY79038.1| Irc4p [Saccharomyces cerevisiae EC1118] >gi|285811545|tpg|DAA12369.1| TPA: Irc4p [Saccharomyces cerevisiae S288c] >gi|323309617|gb|EGA62826.1| Irc4p [Saccharomyces cerevisiae FostersO] >gi|323338091|gb|EGA79326.1| Irc4p [Saccharomyces cerevisiae Vin13] >gi|365766295|gb|EHN07794.1| Irc4p [Saccharomyces cerevisiae x Saccharomyces kudriavzevii VIN7] >gi|392300658|gb|EIW11749.1| Irc4p [Saccharomyces cerevisiae CEN.PK113-7D] >gi|584366859|gb|EWG86852.1| Irc4p [Saccharomyces cerevisiae R008] >gi|584372222|gb|EWG92158.1| Irc4p [Saccharomyces cerevisiae P301] >gi|584376691|gb|EWG96547.1| Irc4p [Saccharomyces cerevisiae R103] >gi|584477456|gb|EWH19199.1| Irc4p [Saccharomyces cerevisiae P283]";
What I want to do is to parse the string capturing a group with any characters until first occurrence of ">"
, resulting in the following string:
result = "/a> ref|NP_010829.1| Irc4p [Saccharomyces cerevisiae S288c]";
I have tried the following regex pattern using the replaceAll(regex, replacement)
method:
str = str.replaceAll("^(.+)>.+", "$1");
Where "^(.+)>.+"
should match any character until first occurrence of ">"
, but the group "^(.+)"
follows until the last occurrence of ">"
Then the result is:
from: "/a> ref|NP_010829.1| Irc4p [Saccharomyces cerevisiae S288c] >gi|74676333|sp|Q03036.1|IRC4_YEAST RecName: Full=Uncharacterized protein IRC4; AltName: Full=Increased recombination centers protein 4 >gi|1165295|gb|AAB64982.1| Ydr540cp [Saccharomyces cerevisiae] >gi|51012753|gb|AAT92670.1| YDR540C [Saccharomyces cerevisiae] >gi|151942499|gb|EDN60855.1| conserved protein [Saccharomyces cerevisiae YJM789] >gi|190404545|gb|EDV07812.1| conserved hypothetical protein [Saccharomyces cerevisiae RM11-1a] >gi|259145774|emb|CAY79038.1| Irc4p [Saccharomyces cerevisiae EC1118] >gi|285811545|tpg|DAA12369.1| TPA: Irc4p [Saccharomyces cerevisiae S288c] >gi|323309617|gb|EGA62826.1| Irc4p [Saccharomyces cerevisiae FostersO] >gi|323338091|gb|EGA79326.1| Irc4p [Saccharomyces cerevisiae Vin13] >gi|365766295|gb|EHN07794.1| Irc4p [Saccharomyces cerevisiae x Saccharomyces kudriavzevii VIN7] >gi|392300658|gb|EIW11749.1| Irc4p [Saccharomyces cerevisiae CEN.PK113-7D] >gi|584366859|gb|EWG86852.1| Irc4p [Saccharomyces cerevisiae R008] >gi|584372222|gb|EWG92158.1| Irc4p [Saccharomyces cerevisiae P301] >gi|584376691|gb|EWG96547.1| Irc4p [Saccharomyces cerevisiae R103] >gi|584477456|gb|EWH19199.1| Irc4p [Saccharomyces cerevisiae P283]";
to: "/a> ref|NP_010829.1| Irc4p [Saccharomyces cerevisiae S288c] >gi|74676333|sp|Q03036.1|IRC4_YEAST RecName: Full=Uncharacterized protein IRC4; AltName: Full=Increased recombination centers protein 4 >gi|1165295|gb|AAB64982.1| Ydr540cp [Saccharomyces cerevisiae] >gi|51012753|gb|AAT92670.1| YDR540C [Saccharomyces cerevisiae] >gi|151942499|gb|EDN60855.1| conserved protein [Saccharomyces cerevisiae YJM789] >gi|190404545|gb|EDV07812.1| conserved hypothetical protein [Saccharomyces cerevisiae RM11-1a] >gi|259145774|emb|CAY79038.1| Irc4p [Saccharomyces cerevisiae EC1118] >gi|285811545|tpg|DAA12369.1| TPA: Irc4p [Saccharomyces cerevisiae S288c] >gi|323309617|gb|EGA62826.1| Irc4p [Saccharomyces cerevisiae FostersO] >gi|323338091|gb|EGA79326.1| Irc4p [Saccharomyces cerevisiae Vin13] >gi|365766295|gb|EHN07794.1| Irc4p [Saccharomyces cerevisiae x Saccharomyces kudriavzevii VIN7] >gi|392300658|gb|EIW11749.1| Irc4p [Saccharomyces cerevisiae CEN.PK113-7D] >gi|584366859|gb|EWG86852.1| Irc4p [Saccharomyces cerevisiae R008] >gi|584372222|gb|EWG92158.1| Irc4p [Saccharomyces cerevisiae P301] >gi|584376691|gb|EWG96547.1| Irc4p [Saccharomyces cerevisiae R103]";
To achieve my result is like doing a loop checking if str.contains(">")
and then using the str.replaceAll("^(.+)>.+", "$1");
to eliminate any char sequence like a backwarding matching.