[解決済み] ある文字列の後に他の文字列が続かない場合にマッチする正規表現
2022-06-25 07:12:16
質問
にマッチする正規表現が必要です。
blahfooblah
にマッチするが
blahfoobarblah
fooと、その後にbarが続かない限り、fooの周りのものだけにマッチさせたい。
これを使ってみました。
foo.*(?<!bar)
というのはかなり近いのですが、これでは
blahfoobarblah
. 後ろの否定的なルックはバーだけでなく、何にでもマッチする必要があります。
私が使っている特定の言語はClojureで、Javaの正規表現が使われています。
EDIT: より具体的には、私はまた、それが
blahfooblahfoobarblah
を渡す必要がありますが
blahfoobarblahblah
.
どのように解決するのですか?
試してみてください。
/(?!.*bar)(?=.*foo)^(\w+)$/
テスト
blahfooblah # pass
blahfooblahbarfail # fail
somethingfoo # pass
shouldbarfooshouldfail # fail
barfoofail # fail
正規表現の説明
NODE EXPLANATION
--------------------------------------------------------------------------------
(?! look ahead to see if there is not:
--------------------------------------------------------------------------------
.* any character except \n (0 or more times
(matching the most amount possible))
--------------------------------------------------------------------------------
bar 'bar'
--------------------------------------------------------------------------------
) end of look-ahead
--------------------------------------------------------------------------------
(?= look ahead to see if there is:
--------------------------------------------------------------------------------
.* any character except \n (0 or more times
(matching the most amount possible))
--------------------------------------------------------------------------------
foo 'foo'
--------------------------------------------------------------------------------
) end of look-ahead
--------------------------------------------------------------------------------
^ the beginning of the string
--------------------------------------------------------------------------------
( group and capture to \1:
--------------------------------------------------------------------------------
\w+ word characters (a-z, A-Z, 0-9, _) (1 or
more times (matching the most amount
possible))
--------------------------------------------------------------------------------
) end of \1
--------------------------------------------------------------------------------
$ before an optional \n, and the end of the
string
その他の正規表現
を除外したいだけなら
bar
の直後で
foo
の直後にある場合は
/(?!.*foobar)(?=.*foo)^(\w+)$/
編集
質問を具体的にするために、更新を行いました。
/(?=.*foo(?!bar))^(\w+)$/
新しいテスト
fooshouldbarpass # pass
butnotfoobarfail # fail
fooshouldpassevenwithfoobar # pass
nofuuhere # fail
新しい説明
(?=.*foo(?!bar))
を保証します。
foo
が見つかるが、直接は続かない
bar
関連
-
springboot project MIMEタイプ text/htmlで転送された静的ファイルを読み込む。
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
Java(1)仕上げの基本概念+eclipseのインストール構成
-
[解決済み] 単語を含まない行にマッチする正規表現
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] XHTMLの自己完結型タグを除くオープンタグにマッチするRegEx
-
[解決済み] grepによるネガティブマッチング(fooを含まない行にマッチする)
-
[解決済み] 正規表現の全出現回数をマッチングさせる方法
-
[解決済み] Regex 2つの文字列間のすべての文字にマッチする
-
[解決済み] 貪欲 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 実装 サイバーパンク風ボタン
おすすめ
-
Java Exceptionが発生しました エラー解決
-
java の例外が発生しました java
-
この行に複数のマーカーがある - HttpServletResponseが型エラーに解決できない
-
[解決済み] 特定の文字が後にない'単語'を探す
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
Eclipseでプロジェクトエクスプローラービューとパッケージエクスプローラービューを使う
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
javaでよく使われる英単語
-
このラインで複数のマーカーを解決する方法
-
[解決済み] 正規表現全体を否定するには?