-1

文字列ファイルから単語を削除しようとして問題が発生しました。たとえば、次のようになります。

    String text = "data['danger.high'] && data['$safe.low'] || data['go.now']";

私がやりたいことは、最初の一重引用符と「。」の間のすべてを文字列から削除することです。、私が望む結果は次のとおりです。

    result = "data[high] && data[low] || data[now]";

これは私が必要とする結果です。

これまでのところ、私が得たものは

    String text = "data['danger.high'] && data['$safe.low'] || data['go.now']";
    text = text.replaceAll("\\'(.*?)\\.", "");

しかし、これは私に与えます

    result = "data[highlownow']"

私は何を間違っていますか?

アップデート

回答ありがとうございます。フォローアップの質問です。

    String text = "data['danger.high'] && (data['$safe.low'] || data['go.now'] == 'yes')";

次の結果が必要です。

    result = "data[high] && (data[low] || data[now] == 'yes')"; 

この場合、一重引用符は「はい」のままにしておきます。

4

3 に答える 3

2

次のようなことができます。

text = text.replaceAll("\\'([$a-zA-Z]+)\\.", "'").replaceAll("'", "");

text.replaceAll("\\'([$a-zA-Z]+)\\.", "'")あなたに行きます:

 data['high'] && data['low'] || data['now']

目的の.replaceAll("'", "");結果が得られます( なし')。

data[high] && data[low] || data[now]
于 2013-04-15T11:09:36.200 に答える
1

正規表現を少し調整する必要があります。$文字と を探し[a-zA-Z]ます。一重引用符を保持したいと思います。それが必要ない場合はお知らせください。文字列で再度使用replaceAll()して、一重引用符も削除できます。

        String text = "data['danger.high'] && data['$safe.low'] || data['go.now']";
        text = text.replaceAll("\\'([$a-zA-Z]+)\\.", "'");
        System.out.println(text);

出力

データ['高'] && データ['低'] || データ['今']

于 2013-04-15T11:08:43.670 に答える
0

あなたの式は、2 番目の一重引用符から始まる文字を削除しているため、この結果が得られます。'] で始まる文字の replaceAll を防止する必要があります。

text = text.replaceAll("\'([$a-zA-Z]+)\.", "'"); を使用します。

于 2013-04-15T11:13:26.803 に答える