之間提取文本我有一個字符串,看起來像這樣爪哇 - 特殊字符和文字
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örpackningFlaska(375 ml)Antal i butik 30 stFörpackningFlaska(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örpackningFlaska(375毫升)安塔爾我butik 30日」
它基本上做什麼我希望這樣做,但在模式的第一次出現之後停止。
我試圖使用正則表達式模式,但我無法得到它的工作。從觀察字符串,我得出結論,我需要一個正則表達式來匹配「)」和「Antal」之間的所有內容。我還需要刪除其他的混亂,但這很容易。我的問題是,我似乎無法讓我的正則表達式工作,而這可能是做這種事情的最佳方式。我知道我必須擺脫這個假設,才能在我的正則表達式中將它變成一個字面的字符,但我無法實現它。
這是正則表達式,我想出了,並試圖:
Pattern p = Pattern.compile("\b\\) (.+?)\bAntal");
Matcher m = p.matcher(name);
m.find();
System.out.println(m.group(1));
任何幫助和想法,歡迎!
如果您希望代碼在一行中完成,請參閱我的回答 – Bohemian