2017-05-18 3 views
1

変数は "$"で区切られていますが、ドット、ハイフン、アンダースコアは任意の順序で入力できますが、空白は含まれません。 は、実は私の正規表現は次のとおりです。正規表現の空白は除外しますが、kepのアンダースコアとハイフン

"\\$(.*?)\\$" 

しかし、それはexempleのためにそのような場合では動作しません:

私は12 $を失うが、あなた緩い25 $

結果が " $だが25ドルだ "。

私もしてみました:

"\\$\\w+\\$" 

しかし、今、それは

は、より多くの詳細を追加ハイフンでは動作しません:

私は0以上のドット、アンダースコアを有する唯一のマッチexepressionをしたいですそのよう-hyphen:

$ test_underscore $

$テストハイフン$

$テスト$

$ test_test2-test3に$

$ test.test2-test3に$

と何も私の最初のように空白がある場合例

+2

が、何を意味ホワイトリストのアプローチを使用し、唯一のドルの間でワード文字、ドット、ハイフンに一致するように

あなたが期待している出力は何ですか? – degant

答えて

1

空白とドル以外の任意の文字に一致する否定文字クラスを使用できます。

"\\$[^\\s$]+\\$" 

ここでは、\$は、空白文字とドル記号以外の1つ以上の記号と、その後に別のドル記号が続くリテラルドル記号と一致します。

"\\$[\\w.-]+\\$" 
+1

ありがとうございました –

1

は、このコードを試してみてください:

Pattern pattern = Pattern.compile("\\$(\\S*)\\$"); 
Matcher matcher = pattern.matcher(s); 
if (matcher.find()) 
    System.out.println(matcher.group(1)); 

\S*は空白

+0

あまりにもありがとうございました –

+0

しかし、$ str $$ str2 $を1つのエントリにもマッチさせます。 –

関連する問題