ハイフンを含まない正規表現を検索しようとしています。たとえば、debt
という語句を検索しますが、debt-to-income
は検索しません。正規表現にハイフンが含まれていない場合は、正規表現を選択する
私は\bdebt-to-income\b
を取得しましたが、それはただdebt-to-income
を選択しますが、私はその逆が必要です。助けて!
ハイフンを含まない正規表現を検索しようとしています。たとえば、debt
という語句を検索しますが、debt-to-income
は検索しません。正規表現にハイフンが含まれていない場合は、正規表現を選択する
私は\bdebt-to-income\b
を取得しましたが、それはただdebt-to-income
を選択しますが、私はその逆が必要です。助けて!
は、次のパターンを使用します。 "借金" が続いていませんが、 "-to-収入"
\bdebt(?!-to-income)
をこのパターンは簡単に多くを制限するために拡張することができます例えば、「debt-of-the-usa
」:
\bdebt(?!-to-income|-of-the-usa)
ヨーあなたはおそらく一致する必要がありますdebt-free
(debt-free
が何も意味しない)ので、ちょうどハイフンを探してはいけません。
だけではJavaScriptを使用します。
var hyphens = 'debt-to-income';
if (hyphens.indexOf('-') == -1) {
// No hyphens
}
debt\b([^\-]|$)
debt
ハイフンまたはストリングの終わりの後に続く文字。
あなたが同様に左側をチェックしたい場合は
:基本的に(^|[^\-])\bdebt\b([^\-]|$)
は、あなたは「用語ではない、文字ではなくハイフン」を探しています:
term = "debt"
re = new RegExp("\\b" + term + "(?=[^\\w-])", "g")
text = "this is debt and debt, debtword and debt-to-income"
console.log(text.replace(re, "<$&>"))
結果:
this is <debt> and <debt>, debtword and debt-to-income
目的はどこ言葉、文字のストリーム内の特定の言葉にを見つけることであるならばは、ハイフンを含む連続した文字数として定義されています。その場合、\ bは、Javascriptではハイフンを単語境界とみなして放棄する必要があります。例としては、上記の前提に基づいて誤ってマッチングされる債務不履行または債務返済が挙げられる。 単語の代わりに[\w\-]
という文字を定義すると、次の正規表現は正しいの単語と一致しますが、残念なことにキャプチャグループを置き換える必要があります。最初の部分はJavascriptのルックバックサポートがないためです。
(?:^|[^\w\-])(debt)(?=[^\w\-])
「\ bdebt \ b」についてはどうですか? – georg
'\ bdebt \ b'は依然として負債収入を得ます – pstinnett
@ thg435ハイフンは単語境界です – Amarghosh