在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