以下の文字列の正規表現を書くのを手伝ってくれませんか。
Hi $(abc) frnd $(xyz)
このテキストでは、囲まれていないすべての単語を照合したいので、上記の文字列で照合し$( )
たいHi
frnd
試してみまし\$((.[^)]*.))
たが、$(abc)と$(xyz)に一致します。しかし、私はシンボルの外側のものと一致させたい
Java で否定後読みを使用できますか? これは C# で動作するようです (ただし、正規表現で 100% とは言えません!)
(?<!\$\([A-Za-z]*)[A-Za-z]+(?!\))
文字列を を含まない部分に分割するか、関数を$(...)
使用して.replaceAll
$(...)
// Raw regex: \$\([^)]+\)
str.split("\\$\\([^)]+\\)");
str.replaceAll("\\$\\([^)]+\\)", "")
その後、必要なすべてのテキストを抽出できます。$(...)
正規表現は、その間のテキストを指定できないことを前提としてい)
ます。などの場合は交換後$(abc$(crap)_outside
のみ残ります。_outside
$(...)
最後の一致境界を使用して、単語を選択して を無視する単一の正規表現を作成することは可能\G
ですが、上記のように行う方が簡単$(...)
です。テキストを一致させる前に部分を削除します。
以下のコードを試してください。目的の出力が印刷されます。
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());
}
}