私は正規表現が初めてで、検索して実験しても解決策が見つかりません。単語でデータベースを検索したい。検索パターンには、返された単語に含まれているはずの文字が含まれている可能性があります。パターン例: pale
「p」および/または「a」および/または「l」および/または「e」を含む単語を返す必要があります:
可能な単語 (データベースにある場合): pal
、lea
、epa
、pale
などelap
...
私の質問は、上記を実行できる正規表現を作成する方法です。
よろしく。
私は正規表現が初めてで、検索して実験しても解決策が見つかりません。単語でデータベースを検索したい。検索パターンには、返された単語に含まれているはずの文字が含まれている可能性があります。パターン例: pale
「p」および/または「a」および/または「l」および/または「e」を含む単語を返す必要があります:
可能な単語 (データベースにある場合): pal
、lea
、epa
、pale
などelap
...
私の質問は、上記を実行できる正規表現を作成する方法です。
よろしく。
SELECT *
FROM MyTable
WHERE word RLIKE '^[pale]+$'
文字数を尊重する正規表現は次のようになります。
^(p?(a?(l?e?|e?l?)|l?(a?|e?)|e?(a?lf?|l?a?))|a?(p?(l?e?|e?l?)|l?(p?e?|e?p?)|e?(p?l?|l?p?))|l?(a?(p?e?|e?p?)|p?(a?e?|e?a?)|e?(a?p?|p?a?))|e?(p?(a?l?|l?a?)|a?(p?l?|l?p?)|l?(a?p?|p?a?)))$
ご覧のとおり、入力の長さに基づいて正規表現のサイズが指数関数的に増加しています。