2011-02-03 23 views
2

私のようなすべての文字列交換する必要があります:あなたはそれをどのように行うだろうregexpを使って "t e x t"を "text"に置き換える方法は?

(すなわちワードに単一の文字をグループ化する)

「私はRubyの正規表現を愛する」ことで「私はR U B yを正規表現を愛する」を?

+1

もっと正式な説明ができますか?あなたはちょうど "r u b y"またはそれのように分割されたすべての単語をマージする必要がありますか?あなたは何を試しましたか、あなたのコードの問題は何ですか? – thkala

+0

あなたのサンプル文字列で動作する1つの粗ヒューリスティックは、連続したすべての単一の文字を、それらの文字からなる単語で置き換えることです。私はRubyでそれを表現するために他の人にそれを残します。 –

+0

ええ、私たちはあなたが探す必要がある単語を知っているような詳細を必要としますか?または、スペースで吹かれた言葉を探す一般的なことが欲しいですか?もしそうなら、あなたは何らかの辞書検索をする必要があるので、本当に難しいでしょう。たとえば、「a」が単語の真ん中にあるのか、それとも不定な記事であるのかを知る方法は? –

答えて

3

これは何か?

/(\b\w\b)\s+(?=\b\w\b)/\1/g 

(私はルビーをしないが、これはおそらくに変換:

"i love r u b y regexp".gsub(/(\b\w\b)\s+(?=\b\w\b)/, "\\1") 

オンライン版:http://rubular.com/r/5e1jTl7MiV

あなただけの単一の文字の後に単一のスペースを削除したい場合は、あなたが望むものは次のようなものかもしれません:

(/\b\w\b\s)(?=(?:\s+|\b\w\b))/ 
+0

右!これは '\ s +'だったはずです。単一のスペースだけを削除したい場合は '\ s'を指定します。しかし、あなたが '(\ b \ w \ b \ s)(?=(?:\ s + | \ b \ w \ b))しない限り、 '。 –

+0

これは本当に解決策ではありません。たとえば、行が 'もしあなたがいないなら、動かない'か、 'また私は答えが嫌いです'とすれば、それは動作しません。 –

+2

@Mike - あなたは素早く答えをダウンダウンしていますか? OPの問題に対する解決策です。もちろん、英語の辞書を使用していない場合、「a」や「I」などの1文字の単語を区別することはできません。確かに正規表現を使用することはできません。元の質問には特定の言葉は言及されていません。 –

関連する問題