我有一个看起来像这样的字符串
String = "Förpackning Flaska (375 ml) Förslutning Skruvkapsyl Kr/lit (104,00) Pris 39,00 kr Antal i butik 30 st Hyllplats 04-11-01 Förpackning Flaska (750 ml) Förslutning Plastkork/syntetkork Kr/lit (100,00) Pris 75,00 kr Antal i butik 16 st Hyllplats 02-03-01";
我想提取这个字符串中的一些文本。我想要的最终结果是这样的:
“Förpackning Flaska (375 ml) Antal i butik 30 st Förpackning Flaska (750 ml) Antal i butik 16 st”。
我可以使用以下代码:
name = name.replace(name.substring(name.indexOf(") ") + 2, name.indexOf("Antal")), "");
name = name.replace(name.substring(name.indexOf("st ") + 2, name.lastIndexOf("")), "");
这会给我这个结果:
“Förpackning Flaska (375 ml) Antal i butik 30 st”
它基本上做了我想要它做的事情,但它在模式第一次出现后停止。
我试图使用正则表达式模式,但我无法让它工作。通过观察字符串,我得出结论,我需要一个匹配“)”和“Antal”之间所有内容的正则表达式模式。我还需要删除其他杂物,但这很容易。我的问题是我似乎无法让我的正则表达式工作,这可能是做这样的事情的最好方法。我知道我必须转义括号才能使其成为我的正则表达式中的文字字符,但我就是无法让它工作。
这是我想出并尝试过的正则表达式:
Pattern p = Pattern.compile("\b\\) (.+?)\bAntal");
Matcher m = p.matcher(name);
m.find();
System.out.println(m.group(1));
欢迎任何帮助和想法!