[解決済み] 正規表現で「この文字列までなら何でもあり」にマッチさせるには?
質問
この正規表現を例にとります。
/^[^abc]/
. これは、a,b,c以外の文字列の先頭にある任意の1文字にマッチします。
を追加した場合
*
の後に
/^[^abc]*/
- を指定すると、正規表現はその後に続く各文字を結果に追加し続けます。
a
,
または
b
,
または
c
.
例えば、ソース文字列
"qwerty qwerty whatever abc hello"
にマッチします。
"qwerty qwerty wh"
.
しかし、マッチする文字列を
"qwerty qwerty whatever "
...言い換えれば、どのようにすれば
正確な順序
"abc"
?
解決方法は?
使用している正規表現が明記されていませんが、これは は、最も一般的なもので、完全なものと見なせるものであれば、どれでも動作します。
/.+?(?=abc)/
仕組み
は
.+?
の欲のないバージョンです。
.+
(1つ以上の
何でも)。を使うときは
.+
は、基本的にすべてマッチします。
そして、もし正規表現に何か他のものがあれば、次のステップに進みます。
にマッチングさせようとする。これは
欲張り
の挙動を示します。
意味
を満たすために、できるだけ多くの
.
を使用する場合
.+?
というように、一度にマッチングして戻ってくるのではなく
他の条件がある場合、エンジンは次の文字に順次マッチします。
正規表現の後続の部分にマッチするまで (もしあれば) ステップする。
これは
欲のない
という意味で、マッチ
をできるだけ少なくして
満たす
.
/.+X/ ~ "abcXabcXabcX" /.+/ ~ "abcXabcXabcX"
^^^^^^^^^^^^ ^^^^^^^^^^^^
/.+?X/ ~ "abcXabcXabcX" /.+?/ ~ "abcXabcXabcX"
^^^^ ^
それに続くのは
(?=
{contents}
)
, a
ゼロ幅
アサーション
, a
見て回る
. このグループ化された構造は、その
の内容は、マッチした文字としてカウントされません (
幅ゼロ
). また
は、マッチするかどうかだけを返します (
アサーション
).
したがって、他の言葉で言えば、正規表現
/.+?(?=abc)/
を意味します。
任意の文字を、"abc"が見つかるまで、できるだけ少なくマッチングさせる。 abc"をカウントしない。
関連
-
[解決済み] 最初のマッチで停止する正規表現
-
[解決済み] 正規表現で変数を使うには?
-
[解決済み] 正規表現におけるワードバウンダリとは何ですか?
-
[解決済み] 01-12]レンジが期待通りに動作しないのはなぜですか?
-
[解決済み] Regexクレジットカード番号テスト
-
[解決済み] 単語を含まない行にマッチする正規表現
-
[解決済み] JavaScriptの正規表現でマッチしたグループにアクセスするにはどうすればよいですか?
-
[解決済み] 有効な正規表現を検出するための正規表現はありますか?
-
[解決済み] カンマ ',' とセミコロン ';' 以外のすべての文字にマッチする正規表現は何ですか?
-
[解決済み] 貪欲 vs. 渋い vs. 所有格の修飾語
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Scalaで正規表現を使ったパターンマッチを行うには?
-
[解決済み] Regexオプショングループ
-
[解決済み] Kibanaクエリの完全一致
-
[解決済み] スペースとタブの任意のシーケンスにマッチする正規表現を作成する方法
-
[解決済み] sedで非欲張り(消極的)な正規表現マッチング?
-
[解決済み] 正規表現 AND 演算子
-
[解決済み] 正規表現は、文字列がターゲットで終わる場合にのみマッチします。
-
[解決済み] Powershellで完全一致の文字列のみを置換する
-
[解決済み] 正規表現におけるワードバウンダリとは何ですか?
-
[解決済み] RegExp マッチする文字列が my で始まらない