ハイフンを境界として考慮しない式にマッチする正規表現が必要です。 つまり、ハイフンを除く正規表現の単語境界
と一致するすべての式を取得します。type ([a-z])\b
ただし一致しません。私の代わりに単語文字クラス[A-Za-z0-9_]
を使用しての、拡張クラスを使用する単語の境界演算子\ bの同等たい:[A-Za-z0-9_-]
ハイフンを境界として考慮しない式にマッチする正規表現が必要です。 つまり、ハイフンを除く正規表現の単語境界
と一致するすべての式を取得します。type ([a-z])\b
ただし一致しません。私の代わりに単語文字クラス[A-Za-z0-9_]
を使用しての、拡張クラスを使用する単語の境界演算子\ bの同等たい:[A-Za-z0-9_-]
あなたはこのために先読みを使用することができますが、言い換えれする
type a-1
最短は否定先読みを使用することです:
type ([a-z])(?![\w-])
(?![\w-])
は「次の文字が\w
であるか-
であれば、一致に失敗」を意味します。ここで
は、通常の先読みを使用していますオプションです:
type ([a-z])(?=[^\w-]|$)
次の文字が文字クラス[\w-]
でていないか、これはの終わりである場合にのみ一致」として(?=[^\w-]|$)
を読むことができます文字列 "です。
それは作業を参照してください:http://www.rubular.com/r/NHYhv72znm
これはルックアラウンドなしで行うことができますか? – eyaler
私は境界文字として「*」を考えたくなかった以外、私はかなり類似した問題がありました。ここでは、私がやったことだ:
\b(?<!\*)[^\s\*]+)\b(?!*)
基本的に、あなたはワード境界にいる場合は、1つの文字を見て、前の文字が「*」だった場合一致しません。あなたが真ん中にいる場合は、スペースやアスタリスクでマッチしないでください。最後にいる場合は、末尾にアスタリスクがないことを確認してください。あなたの場合は、\ sの代わりに\ wを使うことができると思います。私にとって、これは次のような状況でうまくいきました:
*word
wo*rd
word*
正規表現の構文が無効です – MaxZoom
これは.NET、javascriptなどですか? – Jay
@Jay:私は.NETを使用しています – eyaler