Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中使用正则表达式从字符串中提取特定数字_Java_Regex_String - Fatal编程技术网

在java中使用正则表达式从字符串中提取特定数字

在java中使用正则表达式从字符串中提取特定数字,java,regex,string,Java,Regex,String,这是我的绳子 输入: 22 TIRES (2 defs) 1 AP(PEAR + ANC)E (CAN anag) 6 CHIC ("SHEIK" hom) 预期产出: 22 TIRES 1 APPEARANCE 6 CHIC 实际产量: TIRES APPEARANCE CHIC 我尝试使用下面的代码,得到了上面的输出 String firstnames =a.split(" \\(.*")[0].replace("(", "").replace(")", "").repla

这是我的绳子

输入:

22 TIRES (2 defs)

1 AP(PEAR + ANC)E (CAN anag)

6 CHIC ("SHEIK" hom)
预期产出:

22 TIRES

1 APPEARANCE

6 CHIC
实际产量:

TIRES

APPEARANCE

CHIC
我尝试使用下面的代码,得到了上面的输出

String firstnames =a.split(" \\(.*")[0].replace("(", "").replace(")", "").replace(" + ",
                        "");

你知道如何和数字一起提取吗?我不想要括号后面的数字,比如输入“22轮胎(2 def)”。我需要作为“22轮胎”的任何帮助将是伟大的输出

我将使用单个replaceAll函数

str.replaceAll("\\s+\\(.*|\\s*\\+\\s*|[()]", "");

  • \\s+\\(.*
    ),这匹配一个空格和以下
    字符加上遵循此模式的所有剩余字符。因此,示例中的
    (CAN anag)
    部分匹配

  • \\s*\\+\\s*
    匹配
    +
    以及前面和后面的空格

  • [()]
    匹配开始括号或结束括号

  • 至少所有匹配的字符都被空字符串替换


    • 我的做法有点不同

      String line = "22 TIRES (2 defs)\n\n1 AP(PEAR + ANC)E (CAN anag)\n\n6 CHIC (\"SHEIK\" hom)"; 
      String pattern = "(\\d+\\s+)(.*)\\(";
      Pattern r = Pattern.compile(pattern);
      Matcher m = r.matcher(line);
      while (m.find()) {
          String tmp = m.group(1) + m.group(2).replaceAll("[^\\w]", "");
          System.out.println(tmp);
      }
      

      你为什么需要这样做?它是有效的!!你能解释一下它是如何工作的吗?@Avinash Raj你能解释一下代码的具体功能吗@Avinash Raj