2

我有如下语言标签注释的文本:

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)
4

3 回答 3

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);
于 2012-07-04T15:04:47.970 回答
2

这将通过匹配 [] 中的任何内容来工作,尽管 () 也将被隔开:

str.replaceAll(".*?\\[(.*?)\\]", "$1 "));
于 2012-07-04T15:04:54.690 回答
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);
于 2012-07-04T15:05:12.447 回答