文字列をクエリのリストに一致させるための正規表現

マヘックシャー

SQLクエリの入力とリストとしてクエリ結果文字列があります。

どのSQLクエリの結果文字列を出力できるかを確認したいと思います。

例えば ​​:

結果文字列

val = 15.1a

クエリのリスト:

  ["select * from table where val like "15%",
     "select * from table where val in ("15.1a", "15.1b"),
     "select * from table where val = "15.1",
     "select * from table where val != "15",
     "select * from table where val = "18",
    ]

したがって、ここでは、0,1,3のインデックスクエリを実行すると、結果の文字列が表示されることがわかります。

Pythonでそれを行う方法はありますか?私はその仕事をすることができるいくつかの正規表現を探しているのではなく、そのためにSQLエンジンを使いたくありません。

ありがとう

チャリフDZ

興味深い質問:

import re

query_list = [
    "select * from table where val like '15.1%'",
    "select * from table where val in ('15.1a', '15.1b')",
    "select * from table where val = '15.1'",
    "select * from table where val != '15'",
    "select * from table where val = '18'",
]

# pattern to capture only the value used in comparing
#  val like '%some%value'  will return   str %some%value without quotes
operations = {
    'like': r".*?(?:val\slike\s+')(.*)(?:'.*)",
    'in': r".*?(?:val\s+in\s+\()(.*)(?:\).*)",
    '=': r".*?(?:val\s+=\s+')(.*)(?:'.*)",
    '!=': r".*?(?:val\s+\!=\s+')(.*)(?:'.*)",
}

valid_query = []
val = '15.1a'

for query in query_list:
    for op, pattern in operations.items():
        m = re.match(pattern, query)
        if m:
            comparing_value = m.groups(0)[0]
            if op == 'like':
                # here we use regex with non greedy operator
                pcomparing_value = r'{}'.format(comparing_value.replace('%', '.*?'))
                if re.match(pcomparing_value, val):
                    valid_query.append(query)

            # compare val without quotes must be equal
            elif op == '=' and val == comparing_value:
                valid_query.append(query)

            # compare val without quotes must not be equal
            elif op == '!=' and val != comparing_value:
                valid_query.append(query)

            # for in operator compare val with quotes too
            elif op == 'in' and "'{}'".format(val) in comparing_value:
                valid_query.append(query)


print(valid_query)

の出力val = '15.1a'

["select * from table where val like '15.1%'", "select * from table where val in ('15.1a', '15.1b')", "select * from table where val != '15'"]

の出力val = '15'[]

の出力val = '18'は:

 ["select * from table where val != '15'", "select * from table where val = '18'"]

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

文字列を正確に一致させるための正規表現

ディレクトリパスの深さを一致させるための正規表現

Pythonで正規表現の文字列のリストから任意の文字列を一致させる方法は?

正規表現に一致するElasticsearch文字列ベースのクエリ

空またはリクエストマッピングの特定の文字列を除く任意の文字列に一致する正規表現

URLを特定のクエリ文字列パラメータと一致させる正規表現

正規表現は、文字列内の文字を一致させるためには、エスケープされていない場合のみ

2つの列で一致を見つけるための正規表現スクリプト

文字列のリストに一致し、文字列のリストを無視する正規表現

日時の後にスペースと任意の文字を一致させるための正規表現

正規表現-重複を避けるために除外して2つの文字列を一致させる

リスト内の文字列が正規表現に一致する場合

Rのリストに一致する正規表現文字列

リストPythonで一致を見つけるための正規表現

正規表現の組み合わせリストから文字列に一致する正規表現を検索する

正規表現-文字列を中国語以外のUTF文字と一致させるための負の先読み

文字列を最大数の値と一致させるための正しい正規表現

正規表現の一致をリストに保存する

Python正規表現:リストされた部分文字列の1つに一致します

範囲を一致させるための正規表現

温度を一致させるための正規表現(°c)

拼音を一致させるための正規表現

正規表現の一致によって文字列を個別のリストに分割する

リスト内のさまざまな文字列に一致する正規表現

bashシェルスクリプトで2つの文字列を正規表現と一致させる方法は?

パターンの後に正規表現で文字列を一致させるのをやめる

文字列の最初の桁を4に一致させる正規表現。

正規表現-文字列のみを特定の単語に一致させる

文字列を単語に一致させるが複数のスペースを残すための正規表現

TOP 一覧

  1. 1

    三項演算子良い練習の代わりとしてOptional.ofNullableを使用していますか?

  2. 2

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  3. 3

    Spring Boot Filter is not getting invoked if remove @component in fitler class

  4. 4

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  5. 5

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  6. 6

    Ansibleで複数行のシェルスクリプトを実行する方法

  7. 7

    Python / SciPyのピーク検出アルゴリズム

  8. 8

    画像変更コードを実行してもボタンの画像が変更されない

  9. 9

    ビュー用にサイズ変更した後の画像の高さと幅を取得する方法

  10. 10

    VisualStudioコードの特異点/ドッカー画像でPythonインタープリターを使用するにはどうすればよいですか?

  11. 11

    Three.js indexed BufferGeometry vs. InstancedBufferGeometry

  12. 12

    __init__。pyファイルの整理中に循環インポートエラーが発生しました

  13. 13

    二次導関数を数値計算するときの大きな誤差

  14. 14

    値間の一致を見つける最も簡単な方法は何ですか

  15. 15

    androidsoongビルドシステムによるネイティブコードカバレッジ

  16. 16

    Reactでclsxを使用する方法

  17. 17

    How to access json value by key value in freemarker?

  18. 18

    エンティティIDを含む@RequestBody属性をSpringの対応するエンティティに変換します

  19. 19

    PyTesseractを使用した背景色のため、スクリーンショットからテキストを読み取ることができません

  20. 20

    Using Angular's UI-router, how can we make sure the new version of the html partial views are used, rather than the cached version?

  21. 21

    symfonyエラーサーバーが404NotFoundを返しました

ホットタグ

アーカイブ