2011-12-16 14 views
1

\w[a-zA-Z0-9_]と少し奇妙に思えます。私はなぜ0-9_が単語の文字の間に数えられ、なぜ-が単語の文字の間に数えられないのだろうと思います。私は、文分割したい場合は文字の範囲が限定された単語の境界

(\w*\b)

This is counter-example.

それは単語反例 2重量部を分割します。同様に(count.*?\b)counterと一致します。

\bのようなものがあり、-が単語文字(\w)に含まれている可能性はありますか?

また、私は\bの使い方を誤解しましたか?これの標準的な使用例がいくつかありますか?

答えて

2

\wは、大文字と小文字のあいだでアンダースコアと一致するという事実は歴史的です。これは、C識別子と一致するように最初に導入されたためです。

これはJavaの\w(はい、\wはJavaのアクセント記号付き文字と一致しません)の場合も同様です。

\bしかし、は、単語文字と非単語文字の境界線で定義されているではありません。実際は実装に依存します。

本当にあなたが望むことをするアンカーはありませんが、単語とダッシュを一致させたい場合は、最も良いベットは\w*(-\w*)*です。

再び、normal* (special normal*)*パターン!

(およびところで、\bは一部のみ方言で「単語アンカー」であり、他の実装は、それぞれのワードアンカーの開始と終了を代わり\<\>を定義)

[総エラーの編集]

+0

OK。私は[...]で自分のセットを定義するほうが良いと思っていますが、 '\ b'の便利な使い方を見てうれしいです。 Cのソースコード(彼らがそれを使って何をしたか)。 – xralf

+0

"ワードフロンティア"にマッチしたいときはいつでも便利です - ユースケースは多数あり、まだ出会ったことはありません;) – fge

+0

ユースケースに遭遇する場合は、ここにリンクを貼ってください。 – xralf

1

使用この:あなたは電子で終わると共同で始まる何かを一致させたい例えば[\w-]*

文字列:

This is counter-example. 

正規表現:

co[\w-]*e 

マッチ:

counter-example 
関連する問題