-2

以下の文字列の正規表現を書くのを手伝ってくれませんか。

Hi $(abc) frnd $(xyz)

このテキストでは、囲まれていないすべての単語を照合したいので、上記の文字列で照合し$( )たいHifrnd

試してみまし\$((.[^)]*.))たが、$(abc)と$(xyz)に一致します。しかし、私はシンボルの外側のものと一致させたい

4

3 に答える 3

1

Java で否定後読みを使用できますか? これは C# で動作するようです (ただし、正規表現で 100% とは言えません!)

(?<!\$\([A-Za-z]*)[A-Za-z]+(?!\))
于 2013-01-03T12:21:13.767 に答える
1

文字列を を含まない部分に分割するか、関数を$(...)使用して.replaceAll$(...)

// Raw regex: \$\([^)]+\)

str.split("\\$\\([^)]+\\)");

str.replaceAll("\\$\\([^)]+\\)", "")

その後、必要なすべてのテキストを抽出できます。$(...)正規表現は、その間のテキストを指定できないことを前提としてい)ます。などの場合は交換後$(abc$(crap)_outsideのみ残ります。_outside

$(...)最後の一致境界を使用して、単語を選択して を無視する単一の正規表現を作成することは可能\Gですが、上記のように行う方が簡単$(...)です。テキストを一致させる前に部分を削除します。

于 2013-01-03T12:33:28.913 に答える
0

以下のコードを試してください。目的の出力が印刷されます。

public static void main(String[] args)
{
    String text = "Hi $(abc) frnd $(xyz)";
    String[] textArr = text.split("\\$\\([^)]*\\)");

    for (String word : textArr)
    {
        System.out.println(word.trim());

    }

}
于 2013-01-03T12:32:11.793 に答える