[解決済み] 展開された正規表現では、どのように解釈されますか?
質問内容
<ブロッククオートERE内でバックスラッシュ文字( \, \a, \b, \f, \n, \をエスケープシーケンスの開始とみなします。
次に
\\n
と
[\\\n]
の両方が必要です。
\\n
と
[\\\n]
という意味です。
\
の後に改行が続くのですが、このような並びをどう解釈すればいいのか、具体的な処理に迷っています。
\
は全く必要ないのですか?
アップデイト
私はプログラム言語の正規表現を理解することに問題はないので、以下の文脈を作成してください。 レキサー .
[root@ ]# echo "test\
> hi"
解決方法は?
これは、プログラミング言語とその文字列処理オプションに依存します。
例えば、Javaの文字列では、文字列の中にリテラルなバックスラッシュが必要な場合、それをダブルにする必要があります。そのため、正規表現
\n
は次のように書かなければなりません。
"\\n"
. 正規表現を使ってバックスラッシュをマッチングさせる場合、バックスラッシュを2回エスケープする必要があります。つまり
\
の場合、正規表現は
\\
であり,対応するJava文字列は
"\\\\"
.
多くのプログラミング言語には、バックスラッシュをエスケープする必要のない特殊なquot;verbatim"またはquot;raw"文字列が存在します。そのため、正規表現
\n
は、通常のPythonの文字列として、次のように書くことができます。
"\\n"
またはPythonの生の文字列として
r"\n"
. Python の文字列
"\n"
が実際の改行文字です。
バックスラッシュをエスケープしないとうまくいかないことがあるので、混乱することがあります。例えば、Pythonの文字列
"\d\n"
は、数字とその後に改行が続く正規表現として機能します。これは
\d
はPythonの文字列の中で認識される文字エスケープシーケンスではないので、リテラルな
\d
というように、正規表現エンジンに送り込みます。そのため
\n
は実際の改行に変換されますが、これは正規表現がテストされる文字列の改行と一致します。
しかし、結果として得られるシーケンスが有効な文字エスケープシーケンスである場合に、バックスラッシュをエスケープし忘れると、悪いことが起こります。たとえば、正規表現
\bfoo\b
は単語全体にマッチします
foo
(にマッチします(ただし
foo
で
foobar
). もし、正規表現文字列を
"\bfoo\b"
を使用すると、その
\b
は文字列処理によってバックスペース文字に変換されるため、 正規表現エンジンに
<backspace>foo<backspace>
これは明らかに失敗です。
解決策 逐語的な文字列がある場合は常にそれを使用する (例: Python の
r"..."
.NETの
@"..."
を使うか、正規表現がある場合はそれを使うか(例えば、JavaScript や Ruby の
/.../
). また
RegexBuddy
を使えば、正規表現をあなたの言語の特殊な形式に自動的に翻訳してくれます。
例題に戻るには
-
\\n
を正規表現として使用すると、バックスラッシュに続いてn
" -
[\\\n]
を正規表現にすると、"バックスラッシュまたは改行文字のいずれかに一致する"という意味になります。
関連
-
[解決済み】改行を含む任意の文字にマッチする正規表現
-
[解決済み] 最初のマッチで停止する正規表現
-
[解決済み] 正規表現で変数を使うには?
-
[解決済み] URLにセミコロンが含まれていても、有効なのでしょうか?
-
[解決済み] grep --ignore-case --only
-
[解決済み] 正規表現 - 文字列で始まり、文字列で終わる
-
[解決済み] 単語を含まない行にマッチする正規表現
-
[解決済み] JavaScriptの正規表現でマッチしたグループにアクセスするにはどうすればよいですか?
-
[解決済み] 有効な正規表現を検出するための正規表現はありますか?
-
[解決済み] xmlのCDATAエンドトークンをエスケープする方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン