ハイフンを含まない単語を許可する正規表現が必要です。たとえば、文字列「非単語文」では、「文」のみに一致する必要があります。私が書いた:
"\b(?!\w+[-]\w+)\w+"
そしてそれは失敗します:
「文」だけでなく「単語」にもマッチします。
ハイフンを含む単語を無視するにはどうすればよいですか?
よし、これは PCRE (Perl-Compatible Regular Expression systems、つまりそれらのほとんどを意味する) の 1 つです。
(?<![-])\b[a-zA-Z]+\b(?![-])
あなたのためにそれを分解させてください:
(?<![-])
: 否定後読み -- 「次に一致するものは、その直前のものを見てください。ハイフンの場合は、この一致を無視してください」
\b[a-zA-Z]+\b
: 単語境界、単語、単語境界。私たちの「もの」。
(?![-])
: 否定的な先読み -- 「一致したもの、その直後のものを見てください。ハイフンの場合は、この一致を無視してください」
これは、私のお気に入りのオンライン正規表現テスターである RegExr にあります。
これはあなたのために働くでしょうか:
(?<=[^\s])[a-zA-Z]*(?=[$\s])