2012-03-30 13 views
2

私は末尾のすべてのアスタリスクと単語内のすべてのアスタリスクを削除するための正規表現を探しています。先頭と '単語'のアスタリスクを削除するJava正規表現

*He*llo* -> Hello* <br> 
Thi*s *is* *a* t*est* -> This is* a* test* 

終了アスタリスクを受け入れる必要があります。

私は正規表現に実際に慣れていません。私は、文字列の各単語をループし、末尾の「アワード」のアスタリスクを取り除く簡単なプログラムを書くことができることを知っています - しかし、私の問題が正規表現を使って解決できるかどうかは疑問です。

あなたが私を助けてくれることを願っています。 ありがとうございます。

敬具、 イオアニスK.

+0

2番目の結果は「これは* a *テスト*」である必要があります。 – Betlista

+0

はい、Betlista。私は最後に最大1つのアスタリスクを持つことを望んでいました。私の解決策を見つけました。もう一度すべてのヘルパーに感謝します。 –

答えて

2

あなたが先読みを使用する必要があります。

こちらをご覧ください: http://www.regular-expressions.info/lookaround.html

をこのようなものである:\ *(?!(| $))

この正規表現は言う:スペースが続いされていないすべての*または削除行末。 (テストされていません)

+0

残念ながら、提供された正規表現のどちらも機能しません。 少しarroundをテストしましたが、成功しませんでした。 単語内のアスタリスクが消えます。 複数の末尾のアスタリスクまたは先頭のアスタリスクが残ります。 オハイオ州私は参照してください..私は "アスタリスクの先頭を取り除かなければならないと言いたい"と言いたい、申し訳ありません! '*** He * ll * o ** - > Hello *'私は最後に最大1つのアスタリスクを入れたいだけです。 申し訳ありませんが、それは私の間違いでした! –

+0

どうすればいいですか?それの結果は何ですか? –

+0

先頭に '\'がありませんでした。だから私はそれを変換することができませんでした。 これは今非常にうまく動作します! ありがとうございました! 'string.replaceAll(" \\ *(?!(| $)) "、" ");' –

1

は世界的に、空の文字列で

\**\b 

を交換してください。

Javaの正規表現を表すための文字列を使用していますので、あなたはそれに応じてエスケープする必要があります:

"\\**\\b" 
+0

問題がある: '***私は* ** **です* * **トンの*のEST秒*のT *の時間* - > **この** *です* *テスト*' それ'これは*テスト*'です。 私の間違い申し訳ありません。私の問題を十分に指定していない! –

1
final String[] in = { "*He*llo*", "Thi*s is *a* t*est*" }; 
    for (final String s : in) { 
     System.out.println(s.replaceAll("\\*(\\b)", "$1")); 
    } 
+0

は\\ bが問題を引き起こす可能性があることに注意してください。特殊文字では機能しません(しかし、質問はあまりにも明白ではありません)。 –

+0

ありがとうございますが、期待通りに動作しません。 '***私は** *トンの* estは*であるのを* Tの*の時間* * - > **この** *テスト*' まだ末尾されているアスタリスクです。 最後に複数のアスタリスクもあります。 –

+0

@イアニス私の答えを見てください。 – Tomalak

関連する問題