获取带引号的字符串

时间:2011-04-21 16:39:55

标签: java regex string

我有一个字符串"Hello" hello(包括引号),我只想获得带引号但没有引号的Hello

我尝试使用正则表达式,但它从未找到引用我猜测

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

while循环永远不会被执行,建议?

3 个答案:

答案 0 :(得分:5)

- 移动括号内的星形以进行正确的分组---

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

使用代码

成功测试
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));
        }
    }
}

产生了预期的输出

Hello

- 原帖如下 -

您不匹配任何内容,因为您的正则表达式只写入匹配引用的一个字符串。

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

更接近您的需求。注意星号,它表示前面表达式中的零个或多个。在这种情况下,前面的表达式是“任何缺少双引号的东西”。

答案 1 :(得分:4)

如果你想找到任何字符串,我建议你尝试一个带引号的字符串。 ;)

尝试

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

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

答案 2 :(得分:0)

在这种情况下,您只需使用indexOf("\"")