問題タブ [word-boundary]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
3383 参照

regex - match()関数を使用せずにawkで単語境界を使用する方法は?

この awk コマンドに単語境界を追加したい:

and\yの左右に追加しようとしましたが、テストでは機能しませんでした。 私はこれを試しました:wordAwordB
/\ywordA\y/&&/\ywordB\y/

皆さんありがとう!

(ps: 私は awk を初めて使用するので、match() 関数を回避しようとしていました。)

0 投票する
4 に答える
777 参照

java - 文字列のreplaceAllを使用していくつかの文字が先行するときに置き換えない方法

テキスト内のいくつかの単語を置き換える必要がありますが、次のように置換戦略に条件を入れる必要があります。

word1word2に置き換えたい:

しかし、次のようなword3が前にある場合、word1を置き換えたくありません。

つまり、テキストがword3.word1の場合は、触れたくありません。しかし、 Stringのメソッドを使用して単語境界でそれを処理できないようです。replaceAll

編集:

また、word1に「-」文字の接頭辞または接尾辞がある場合、つまり-word1またはword1-または-word1-を変更したくありません

どんな助けもかなりのものです。

0 投票する
1 に答える
666 参照

java - DFA 正規表現マッチャーを使用して正規表現アサーション/ルックアラウンド (つまり \b スタイルの単語境界) を実装する方法

DFA ベースの正規表現マッチャー内で「単語境界」マッチを実装したいと考えています。誰かがこれがどのように行われるか教えてもらえますか?

背景を説明すると、現在「dk.brics.automaton」ライブラリを使用していますが、アサーション (\b単語境界など) をサポートしていません。私の主な目標は実際に正規表現の同等性を判断することであり、実際のマッチングを行うことではないため、DFA ベースのエンジンを使用する必要があります。

さらに、次の質問に対する回答は、これが可能であることを示しているようです: DFA ベースの正規表現マッチング - すべての一致を取得する方法は? 言うことによって

「ここでも、特別な命令を含むイプシロン遷移をシミュレーターに追加することでこれを管理します。アサーションがパスした場合、状態ポインターは続行されます。それ以外の場合は破棄されます。」

しかし、これが何を意味するのか、私にはよくわかりません。エンドポイントを見て、そのエンドポイントがアサーションを満たす場合にのみトラバースできる特別なタイプのイプシロン遷移でのみ実行できることを示唆していますか、または何らかの方法で構成された「通常の」イプシロン遷移で実行できますか? これらの「特別な」タイプのイプシロン遷移が必要な場合、これらをどのように決定できますか (つまり、標準の DFA に変換できますか)?

これを実際に実装する方法の説明へのポインタは大歓迎です。

0 投票する
2 に答える
256 参照

javascript - RegExp オブジェクトで単語境界を使用する方法

私が知りたいのは、RegExp オブジェクトで単語境界を使用する方法です。

例えば:

これは機能しておらず、できません:

後で AB を変数に置き換える必要があるためです。

他のすべてが RegExp オブジェクトで機能することは知っていますが、何らかの理由で単語境界が機能しません。この問題についてご協力いただきありがとうございます。:)

例: http://jsfiddle.net/7Kt5A/1/

0 投票する
2 に答える
315 参照

javascript - 単語境界は記号文字で機能しますか?

チャットの絵文字機能に単語境界を実装しようとしています。しかし、何らかの理由で、単語の境界を機能させることができないようです。私は正規表現が初めてです。

だから私がするとき:

これが起こります: Jsfiddle

実際には問題なく動作し、単独で立っている 2 つの Hi を削除します。

しかし、reg をエスケープされたスマイリーに変更してから文字列を変更すると、次のようになります。

これが起こります: Jsfiddle

うまくいきません。弦はそのままです。シンボルに単語境界を使用できないということですか? もしそうなら、Facebookはチャットでどのようにそれを行うのですか?

0 投票する
1 に答える
381 参照

php - MySQL REGEXPは境界語のみに一致しますが、htmlタグの一致は除外します

この質問と回答に続いて、私はまだ私が得る結果に少し問題があります、

例えば、

REGEXP '>[^<]*lau[[:>:]]'' lau 'にのみ一致しますが、正しい' laurence 'には一致しません。

REGEXP '>[^<]*men[[:>:]]'私が求めているものではない「エンパワーメント」と「女性」に一致します。

REGEXP '( |>|$)home( |<|$)'「ホーム」にのみ一致しますが、「ホーム」には一致しません'それがすべきです。

これらを正しく一致させるにはどうすればよいですか?

例えば、

htmlタグ内のどのオカレンスとも一致しないようする必要があります。故郷-一致しない

0 投票する
1 に答える
418 参照

php - PHP '文字で境界のあるノイズワード正規表現を削除

文字列からノイズ ワードを削除しようとしています。適切なアルゴリズムであると思われるものを持っていますが、問題が発生しています。preg_replace を実行する前に、アポストロフィ (') 以外のすべての句読点を削除します。私はこのpreg_replaceを通してそれを入れました:

実際にその ' 文字を持っている単語を除いて、これはうまく機能します。preg_replace はそれを境界文字として扱っているようです。これは私にとって問題です。

これを回避する方法はありますか?おそらく別の解決策ですか?

ありがとう!

これが私が使用している例です:

3 行目には、preg_replace の直前にある $content のコメントが表示されます。

私の NoiseWords 配列がどのように見えるかはご想像いただけると思いますが、ここに示すのはほんの一部です。

0 投票する
2 に答える
922 参照

mysql - mysql concat 正規表現の単語境界と引用

これが私のクエリです

ここで別の例の単語境界を使用するために、mysql like をこれに置き換えました。しかし、エスケープされたアポストロフィに問題があり、一致してもデータベース内でデルが見つかりません。

0 投票する
1 に答える
885 参照

java - 正規表現で境界文字をカスタマイズする

\b正規表現で境界文字をキャプチャするために使用されることがわかりました。

正規表現\bnull\bと入力の,null,ようにキャプチャnullし、入力.null.でもキャプチャしますnull

私が望むのは\b、入力のnullのみをキャプチャし、nullなど,null,を考慮すべきではないことを伝えることです-null- .null.

これどうやってするの?

0 投票する
1 に答える
2611 参照

c++ - 正規表現 - 単語境界の失敗

要約すると、正規表現パターンが文字列のセグメントを単語全体の変数名と間違えないようにするにはどうすればよいですか? 単語の境界を使用していても、より大きな単語の一部である文字を置き換えています\b

私がやろうとしていること:私は電卓に取り組んでいます。これには変数のリストがあり、式をパーサーに渡す前に、関数を呼び出して、ParseVars()変数regex_searchマッチングのパターンを使用します。変数パターンに一致するすべてのトークンを取得したら、その文字列が実際に変数名のリストにあるかどうかを確認し、そうであれば、文字列を変数値に置き換えます。また、パーサーで計算が行われるたびに、 、 などの名前ans1で定数を定義ans2します。

問題は:aという名前の変数が定義されていて、その値が であるとしましょう6。(ちなみに、これらを a で追跡するmap<string,double> Vars;ParseVars("ans1")、結果の文字列は になります"ans1"。また、 を使用してもParseVar()、文字列ans1+ans2+9は同じままです。文字列は に9+aなり9+6ます。したがって、これまでのところ、私の正規表現は期待どおりに機能します。

しかし、そうするとParseVars("ans1+a")、結果の文字列は"6ns1+6". 変数を使用した場合にのみ正規表現の単語境界が失敗する理由について混乱しています。「a」は常に「ans1」で見つかりますが、「a」が文字列のどこかに単独である場合にのみ置き換えられます.

私が持っているもの:これが私の正規表現パターンです:\b([a-z][a-z0-9_]*)\bこれは単語全体にのみ一致するべきではありませんか? 単語境界は、'a' が文字列内のどこかで単独になるまで正常に機能します。多分それは私のParseVars()機能です、ここにコードがあります:

a等しいので6、どうすれば望ましいのではなくans1+aなるのを防ぐことができますか?6ns1+6ans1+6