私はこのような文字列を持っています
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));
どんな助けやアイデアも大歓迎です!