有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java获取带引号的字符串

我有一个字符串"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) 个答案

  1. # 1 楼答案

    我建议您尝试使用带有引号的字符串,如果您想找到任何字符串的话。;)

    试一试

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

    String s = "\"Hello\" hello";
    
  2. # 2 楼答案

    在这种情况下,您可以简单地使用indexOf("\"")

  3. # 3 楼答案

    将星号移到括号内以便正确分组-

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

    使用该代码成功地进行了测试

    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
    

    原文如下

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

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

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