我的文字用语言标签注释如下:
PRE[per] ART[la] NOUN[creazione] PRE[di] ART[un] NOUN[prodotto] ADJ[innovativo] ARTPRE[nel] NOUN[mercato] ARTPRE[delle] NOUN[comunicazioni] PRE[senza] NOUN[fili] PUN[(] NPR[WiFi] PUN[)]
什么正则表达式会给我回复方括号内的文本,间隔为一个匹配?那就是:
per la creazione di un prodotto innovativo nel mercato delle comunicazioni senza fili (WiFi)
答案 0 :(得分:2)
你需要一个正则表达式和一个连接所有匹配的循环。
由于您已应用Java标记,因此Java代码为:
String text = ...;
Matcher matcher = Pattern.compile("\\[(.*?)\\]").matcher(text);
StringBuilder result = new StringBuilder();
while (matcher.find()) {
result.append(matcher.group(1));
result.append(' ');
}
System.out.println(result);
答案 1 :(得分:2)
这将通过匹配[]内的任何内容来工作,尽管()也将是间隔的:
str.replaceAll(".*?\\[(.*?)\\]", "$1 "));
答案 2 :(得分:0)
String text = "PRE[per] ART[la] NOUN[creazione] PRE[di] ART[un] NOUN[prodotto] ADJ[innovativo] ARTPRE[nel] NOUN[mercato] ARTPRE[delle] NOUN[comunicazioni] PRE[senza] NOUN[fili] PUN[(] NPR[WiFi] PUN[)] ";
Pattern pattern = Pattern.compile("(\\[(\\w+)\\])");
Matcher matcher = pattern.matcher(text);
StringBuilder sb = new StringBuilder();
while(matcher.find()) {
sb.append(matcher.group(2)).append(" ");
}
System.out.println(sb);