简体   繁体   中英

How can I get all content between two pipes using regular expression

I have a String say

String s = "|India| vs Aus";

In this case result should be only India .

Second case:

String s = "Aus vs |India|"; In this case result should be only India .

3rd case:

String s = "|India| vs |Aus|" Result shouls contain only India, Aus . vs should not present in output.

And in these scenarios, there can be any other word in place of vs. eg String can be like this also |India| in |Aus|. and the String can be like this also |India| and |Sri Lanka| in |Aus|. I want those words that are present in between two pipes like India, Sri Lanka, Aus.

I want to do it in Java.

Any pointer will be helpful.

You would use a regex like...

\|[^|]+\| 

...or...

\|.+?\| 

You must escape the pipe because the pipe has special meaning in a regex as or .

You are looking at something similar to this:

    String s = "|India| vs |Aus|";
    Pattern p = Pattern.compile("\\|(.*?)\\|");
    Matcher m = p.matcher(s);
    while(m.find()){
        System.out.println(m.group(1));
    }

You need to use the group to get the contents inside the paranthesis in the regexp.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM