Regexは正しいツールではない可能性があります。RegExを使用して、NonLetter文字で区切られていても特定の単語を見つける
文字以外の文字で分割されていても検索したいと思っています。たとえば、One
を検索しようとしている場合、O-ne
は一致しますが、--O__n--e
は一致しますが、O--nce
は一致しません。
XY問題を回避するには:これは、冒涜フィルタの単語を一致させるためのものです。このケースが出て、String.toLower
、String.Indexof
およびString.Replace
を使用してすべての非文字を削除し、単語を*
に置き換えてから元の文字列を再構成する(かなり長い)解決策があります。私は正規表現を使って解決策を見つけようとしていました。ここで私はこれまで試したものです:
(.\*)(([^a-zA-Z]*)(?i)(Y)([^a-zA-Z]*)(?i)(e)([^a-zA-Z]*)(?i)(s)([^a-zA-Z]*)\b)(.\*)
それはI wasn't born --Y_e--s
はなく、I wasn't born --Y_e--st
のようなものと一致しました。
は、だから私はこれまで、それを変更する、(貪欲どんな毎回文字列全体にマッチしていない)のコース始まり(.*
)オプション--Y_e--s
部分を作るために\b
後?
を追加しました:
(.\*?)(([^a-zA-Z]*)(?i)(Y)([^a-zA-Z]*)(?i)(e)([^a-zA-Z]*)(?i)(s)([^a-zA-Z]*)\b)?(.\*?)
をどの何も一致しません。
私は困惑しています。私が欲しいのはこれです:
(Capture Group start of string) (Capture group of my Target word that might be separated by non Letter characters) (Capture Group of End of string).