Regular Expressions
ワード境界
サーチ…
構文
- POSIXスタイル、単語の終わり:
[[:>:]]
- POSIXスタイル、単語の始まり:
[[:<:]]
- POSIXスタイル、単語境界:
[[:<:][:>:]]
- SVR4 / GNU、単語の終わり:
\>
- SVR4 / GNU、単語の先頭:
\<
- Perl / GNU、単語境界:
\b
- Tcl、単語の終わり:
\M
- Tcl、単語の開始:
\m
- Tcl、単語境界:
\y
- ポータブルERE、単語の開始:
(^|[^[:alnum:]_])
- ポータブルERE、単語の末尾:
([^[:alnum:]_]|$)
備考
完全な単語に一致
\bfoo\b
英数字なしで完全な単語にマッチします_
それによって、前後の。
単語境界として機能する3つの異なるポジションがあります。
- 文字列の最初の文字の前に、最初の文字が単語文字の場合。
- 最後の文字が単語文字の場合は、文字列の最後の文字の後に指定します。
- 文字列内の2つの文字の間に、1つは単語文字であり、もう1つは単語文字ではありません。
ここでの単語文字という用語は、以下のいずれかを意味します
- アルファベット(
[a-zA-Z]
) - 番号(
[0-9]
) - アンダースコア
_
要するに、 単語の文字 = \w
= [a-zA-Z0-9_]
単語の最初または最後にパターンを見つける
次の文字列を調べます。
foobarfoo
bar
foobar
barfoo
- 正規表現
bar
は4つの文字列すべてに一致し、 -
\bbar\b
は、第2、第3、 -
bar\b
は2番目と3番目の文字列を一致させることができます。 -
\bbar
は2番目と4番目の文字列と一致します。
単語の境界
\b
メタ文字
単語全体を簡単に見つけるために、メタキャラクタ\b
使用することができます。英数字シーケンス*の始まり と 終わりを示します。また、この位置をマークする役割しか果たさないため、実際にはそれ自身のキャラクタとは一致しません。
*:英数字のシーケンスを単語として呼び出すのは一般的です。なぜなら、 \w
(単語の文字class)で文字を捕捉できるからです。しかし、これには誤解を招く可能性があります。 \w
には数字と、ほとんどの味ではアンダースコアも含まれているからです。
例:
正規表現 | 入力 | 一致しますか? |
---|---|---|
\bstack\b | stackoverflow | いいえ 、単語stack 全体の発生はないので |
\bstack\b | foo stack bar | はい 、 stack 前後には何もないので |
\bstack\b | stack!overflow | はい : stack 前に何もありません! 単語の文字ではありません |
\bstack | stackoverflow | はい 、 stack 前に何もないので |
overflow\b | stackoverflow | はい 、 overflow 後は何もないので |
\B
メタキャラクター
これは\b
の反対で、すべての非境界文字の位置と一致します。 \b
と同様、場所にマッチするので、それ自身の文字は一致しません。これは、 非単語全体を検索するために有用です。
例:
正規表現 | 入力 | 一致しますか? |
---|---|---|
\Bb\B | abc | はい 、 b は単語の境界に囲まれていないためです。 |
\Ba\B | abc | いいえ 、 a はその左側に単語境界を持っています。 |
a\B | abc | はい 、 a 右側に単語境界がa ません。 |
\B,\B | a,,,b | はい 、 \B は2つの単語以外の文字の間のスペースにも一致するため、2番目のカンマと一致します(最初のカンマの左側と2番目のカンマの左側に単語境界があることに注意してください)。 |
テキストを短くするが、最後の単語を壊さない
長いテキストをN文字以下の長さにするには、最後の単語をそのまま残すには、 .{0,N}\b
パターンを使用します.{0,N}\b
^(.{0,N})\b.*
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow