[過去ログ] スレ立てるまでもない質問はここで 162匹目 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
111
(1): (アウアウウー Sa45-Rexe) 2022/10/26(水)13:04 ID:Do8Z1/L1a(7/9) AAS
if (preg_match("/\bweb\b/i", "PHP is the web scripting language of choice.")) {
    echo "A match was found.";
} else {
    echo "A match was not found.";
}
PHPマニュアルに↑のように書いてあるわけよ
ここでダブルクオーテーションで囲まれてる"/\bweb\b/i"のことを文字列リテラルと言うわけ
PHPでダブルクオーテーションで囲まれた文字列リテラルはその中の\が特別な意味を持つんだ
これをエスケープコードと言う
エスケープコードを普通の文字に直すことを「エスケープする」と言ってこの場合は\を二つ重ねて\\と書くことでエスケープされてただの\を表すようになる
だから\bを書きたい時には\\bと書かなきゃいけないはず
なのにエスケープしなくていいのか?
というのが俺の疑問

プログラマー板で話す時ってここから言わなきゃいけなかったのか
知らんかったわ
134: (ワッチョイ e94f-Y/ct) 2022/10/27(木)00:08 ID:6HC7kWqW0(1/2) AAS
>>111
Ruby では、/〜/ は文字列ではなく、正規表現リテラル。
\b は単語境界、\B は非単語境界にマッチする

p /\b.\b/.match( "a b c" ) # => "a"
p /\B.\B/.match( "abc" ) # => "b"

文字列から、正規表現リテラルを作る場合は、\b を\\b にしないといけない

re_1 = "\b."
p /#{ re_1 }/ #=> /\x08./

re_2 = "\\b."
p reg = /#{ re_2 }/ #=> /\b./
p reg.match( "abc" ) # => "a"
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.038s