tyczj
tyczj

Reputation: 74066

getting a string with quotes

I have a string "Hello" hello (including the quotes) and i just want to get the Hello that has the quotes but without the quotes

i tried using regular expression but it never finds the quotes im guessing

String s = new String("string");
    Pattern p = Pattern.compile("\"([^\"])\"");
    Matcher m = p.matcher(n);
    while (m.find()) {
      s = m.group(1);
    }

the while loop never gets executed, suggestions?

Upvotes: 2

Views: 353

Answers (3)

Edwin Buck
Edwin Buck

Reputation: 70999

-- Moved the star inside the parenthesis for proper grouping ---

"\"([^\"]*)\""

Tested successfully with the code

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

    public static void main(String[] args) {
        String s = new String("\"Hello\" hello");
        Pattern p = Pattern.compile("\"([^\"]*)\"");
        Matcher m = p.matcher(s);
        while (m.find()) {
            System.out.println(m.group(1));
        }
    }
}

which produced the expected output

Hello

-- Original post follows --

You don't match anything because your regex is written to only match quoted one character strings.

"\"([^\"])*\""

is closer to what you need. Note the star, it means zero or more of the preceeding expression. In this case the preceeding expression is "anything that lacks a double quote".

Upvotes: 5

fastcodejava
fastcodejava

Reputation: 41127

You can simply use indexOf("\"") in this case.

Upvotes: 0

Peter Lawrey
Peter Lawrey

Reputation: 533930

I suggest you try a String which has quotes in it if you want to find any. ;)

Try

String s = "start  \"string\" end";

or

String s = "\"Hello\" hello";

Upvotes: 4

Related Questions