問題タブ [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 に答える
2162 参照

php - PHP Regex Word Boundary 除外アンダースコア _

私は正規表現の単語境界 \b を使用してfooおり、次のように一致させようとしています$sentenceが、結果は必要なものではありunderscoreません。ハイフンやスペースと同じようにアンダースコアを単語境界にしたいのです。

期待される:

私のコード:

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

regex - 正規表現の否定先読みと単語境界により、キャプチャ グループから最初の文字が削除される

「and」を除く文字列内のすべての単語をキャプチャしようとしています。また、*this* のようにアスタリスクで囲まれた単語もキャプチャしたいと考えています。私が使用している正規表現コマンドはほとんど機能しますが、アスタリスクで単語をキャプチャすると、最初の単語が除外されます (したがって、*this* は this* のみをキャプチャします)。私が使用している正規表現は次のとおりです。

最後の単語境界を削除すると、すべての *this* が取り込まれますが、「and」は除外されません。

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

java - 段落内の特定のキーワードを見つけるために境界が機能しない

段落から特定の単語を見つけたい。境界を使用して見つけました。次の例を考えてみましょう。

このコードを UNIX サーバーで実行すると、次のエラーが表示されます。

java.util.regex.PatternSyntaxException: インデックス 5 付近に無効な/サポートされていないエスケープ シーケンスがあります
\bTMTH_EQUIP_IDLE_REASON\b.
^
java.util.regex.Pattern.error(Pattern.java:1713)
で java.util.regex.Pattern.escape(Pattern.java:2177)
で java.util.regex.Pattern.atom(Pattern.java: 1952)
で java.util.regex.Pattern.sequence(Pattern.java:1834)
で java.util.regex.Pattern.expr(Pattern.java:1752 ) で java.util.regex.Pattern.compile(Pattern.java)
で:1460)
で java.util.regex.Pattern.(Pattern.java:1133)
で java.util.regex.Pattern.compile(Pattern.java:823)
で java.util.regex.Pattern.matches(Pattern.java) で:928)
java.lang.String.matches(String.java:2091)
で com.acc.directory.scanner.SDScanner.main(SDScanner.java:309) で

に置き換え\\bてみました\\\\b が、うまくいきませんでした。false を返します。誰でもこの問題を解決する方法を教えてください。どこでも検索しまし\\bたが、置き換える答えが1つしか\\\\bありませんが、うまくいきません。

PS。これは、私が試したことと必要な出力を示すダミーの例です。実際のデータを使用してコードを実行したところ、その出力からエラーが取得されました。

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

regex - カスタム単語境界を使用して N 個の単語を取得する正規表現パターンを作成するにはどうすればよいですか?

通常の RegEx 空白 (\s) と次のような句読点であるカスタム単語境界を使用して最初の N 単語を返す RegEx パターンが必要です.,;:!?-*_

編集 #1: コメントありがとうございます。

明確にするために:

  1. 単語の区切りとなる文字を設定したい
  2. これを「区切り文字セット」または strDelimiters と呼びましょう
  3. strDelimiters = ".,;:!?-*_"
  4. nNumWordsToFind = 5
  5. 単語は、strDelimiters に文字を含まない連続したテキストとして定義されます
  6. 正規表現の単語境界は、strDelimiters 内の 1 つ以上の文字を含む連続したテキストです。
  7. strDelimiters を使用して最初の nNumWordsToFind を取得/返す RegEx パターンを構築したいと思います。

編集 #2: 2015 年 8 月 8 日土曜日午前 12:49 US CT

@maraca は、最初に述べたように私の質問に確実に答えました。しかし、実際に必要なのは、単語数 ≤ nNumWordsToFind を返すことです。したがって、ソース テキストに 3 単語しかないのに、正規表現が 4 単語を要求する場合、3 単語を返す必要があります。nNumWordsToFind > ソース テキスト内の実際の単語数の場合、maraca によって提供される回答は失敗します。

例えば:

これは 10 語と見なされます。最初の 5 単語が必要な場合は、次のように返されます。

通常の \s 空白を使用したこのパターンがありますが、これは機能しますが、必要なものとはまったく異なります。

どこで<NumWordsOut>返される単語の数です。

この単語境界パターンも見つけましたが、使い方がわかりません。

ASCII 文字と非文字の間の境界を検出する「実際の単語境界」。

しかし、私は自分の言葉で数字も許容したいと思います。

IAC さん、上記のカスタム単語境界パターンを使用して、テキストの最初の N 単語を返す方法がわかりませんでした。

ところで、これをKeyboard Maestroマクロで使用します。

誰でも助けることができますか?ティア。

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

regex - 正規表現の単語境界に含まれるハイフン/ダッシュ \b

簡単に言えば:

(どちらが正しいかは一致しません)

2番目の式のように一致させたくありません。これを達成する方法を教えてください。ありがとうございます。

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

regex - Notepad ++単一の単語で行を見つける方法は?

以下では:

3、6、9 のような単一の単語を含む行を見つけるには、どのように正規表現を作成すればよいでしょうか? オプションで、それぞれの先頭に改行を挿入しますか?

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

javascript - 単語境界が「\b」の正規表現でのドル記号「\$」 (PHP / JavaScript)

正規表現 (ここでは PHP と JavaScript のいずれか) のドル記号 "$" に関する問題は、以前に何度も議論されていることを認識しています: はい、その前にバックスラッシュ "\" を追加する必要があることを知っています (ただし、ドル記号を一致させる正しい方法は "\$" です。...そこに行って、それを行って、正常に動作します。


しかし、ここに私の新しい問題があります。「\b」でマークされた単語境界の隣にドル記号「\$」があります。... 次の例は、regexpal.com などで簡単に再現できます。

検索する次のテキストから始めましょう。

50ドル

ドル 50

50ドル

50米ドル

私の正規表現は、「USD」、「Dollar」、または「$」のいずれかを見つけるはずです。簡単です: 試してみましょう

(米ドル|ドル|\$)

成功: "$"、"USD"、および "Dollars" を含む両方の "Dollar" を検出します。

しかし、多肢選択の後に単語境界を追加して、「ドル」をスキップしてみましょう。

(米ドル|ドル|\$)\b

そして、これは問題です: "USD" が一致し、"Dollar" が一致し、"Dollars" が拒否されます... しかし、適切にバックスラッシュ (またはエスケープ) された単一の "$" も拒否されます。 .

括弧内の複数選択とは関係ありません:

\$

対。

\$\b

それはまったく同じです。最初のものはドル記号に一致しますが、2 番目のものは一致しません。


別の発見:

(米ドル|ドル|\$) \b

")" と "\b" の間に空白の " " を挿入すると、実際に機能します。ただし、その回避策はすべての状況で実行できるとは限りません (空白以外の単語境界がある場合)。


単語の境界が関係している場合、エスケープされたドル記号が見つからないようです。

この謎を解決するためのあなたの提案を聞きたいです。-- よろしくお願いします!

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

regex - go で regexp.MatchString() で単語境界 (\b) を使用する方法

関数 regexp.matchString() を使用して、正規表現パターンを文字列に一致させています。完全一致を見つけるには、単語境界を使用する必要があります。たとえば、「コンピューター」ではなく「コンピュート」に一致させたいとします。問題は、文字列に「compute」と「computer」の両方が含まれることです。だから私は単語境界を使いたい。いくつかのオンライン go-regex テスターで \b を使用してみましたが、うまくいきました。ただし、 \b は regexp.matchString() 関数では機能しないようです。\b に代わるものがあるかどうかは誰にもわかりませんか? またはどうすれば期待される結果を得ることができますか? 私のコード

\b を使用すると、この関数は false を返します。助けてください