非常に単純ですが、#
シンボルを正規表現を使って一致させる必要があります。私はハッシュタグ検出器に取り組んでいます。正規表現でポップ(#)記号を一致させる方法(ハッシュタグ用)
私はGoogleとスタックオーバーフローで検索しようとしました。 1つの関連する投稿はhereですが、文字列から#記号を削除したいので、正規表現を使用しませんでした。
正規表現/\b\#\w\w+/
と/\b#\w\w+/
を試しても機能しません。#
を削除すると、その単語が検出されます。
非常に単純ですが、#
シンボルを正規表現を使って一致させる必要があります。私はハッシュタグ検出器に取り組んでいます。正規表現でポップ(#)記号を一致させる方法(ハッシュタグ用)
私はGoogleとスタックオーバーフローで検索しようとしました。 1つの関連する投稿はhereですが、文字列から#記号を削除したいので、正規表現を使用しませんでした。
正規表現/\b\#\w\w+/
と/\b#\w\w+/
を試しても機能しません。#
を削除すると、その単語が検出されます。
あなたは(それはおそらくそれを投げています\b
です)、それをエスケープする必要はありません:あなたは区切り文字としてそれを使用しない限り
if (preg_match('/^\w+#(\w+)/', 'abc#def', $matches)) {
print_r($matches);
}
/* output of $matches:
Array
(
[0] => abc#def
[1] => def
)
*/
私は#abcdefを検出したいのですが、asdasd#は検出しません。 –
しかし、あなたは私が尋ねたことに答えました。 –
#
は、正規表現で特別な意味を持ちません。ちょうどそれをまっすぐに入れて、それはうまくいくはずです。
\b
は単語境界を検出し、#abc
では、単語境界は#
の後でabc
の前になります。したがって、を使用する必要があります。\b
は余分です。#\w\w+
が必要です。
なぜ '\ w'が2回必要ですか? '\ w +'は1つ以上を意味しないのでしょうか? –
それはOPのその方法だったので。理想的には、 '\ w {2、}'は「2つ以上」を意味します。 –
'#\ b \ w 'の' \ b'は明らかに余計です。 – Gumbo
/\#(\w+)/
を使用すると、ハッシュタグとハッシュタグを一致させることができます。/\#\w+/
は、ハッシュを含むハッシュタグ全体と一致します。
これまでの回答に対するコメントでは、x#x
の一致を避けたいと考えています。 その場合、あなたは\b
が、\B
を必要としません:
\B#(\w\w+)
(あなたは本当に#後の2または、より多くの単語文字が必要な場合)。
\B
はNON-word-boundaryを意味し、#
は単語文字ではないため、直前の文字が単語文字でない場合は正確に一致します。
少し遅れましたが、とにかく+1です。 –
あなたはそれをエスケープしようとしましたか? ''\#'' – Vitamin
あなたが照合したいサンプルテキストを投稿してください。あなたの問題は#記号ではなく、正規表現内に埋め込むことになります。 – pocketfullofcheese
@Vague:最初の正規表現で投稿したように見えます。 –