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[)]  

1つの一致として間隔を空けて、角かっこ内のテキストを返す正規表現は何ですか?あれは:

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 に答える