2011-08-02 8 views
1

ローカライゼーションに悪い文字列を検出するSQLクエリを構築しようとしています。連結で使用される文字列のように、不正なプレースホルダなどがあります。ローカライゼーションに悪い英語の文字列を検出するSQLクエリ

例:

  • Go toは - 末尾のスペース
  • Subscribe toを持っている - 何かに、それはプレースホルダーでなければなりません。
  • 私は完璧なソリューションが存在しないことを十分に承知している大文字または他の数
  • で始まらない何も...(アイデアが付属していて自由に感じる)

それを得るために絶対に普通のことです偽陽性

翻訳する前に調べる必要がある文字列のリストをコンパイルすることは非常に便利です。

+0

私は本当に私は実際のコードでこれを探します...それがうまくいくとは思いません。これは、正規表現やSQL文ではおそらくできません。私は字句解析や人工知能に行きます。これは本当に検出するのは難しいことです:( –

答えて

0

は、私はすでにこれを行うためのいくつかの条件があり、ここにある:

SELECT text FROM strings WHERE 
    text REGEXP '[[:<:]](of|per|as|with|to|from|at|with)\s*$' >= 1 
    /* ending with a preposition*/ 

    OR (NOT text REGEXP '^[A-Z0-9{]') 
    /* starting with lowercase...?*/ 

    OR text LIKE '%{0}%' 
    /* placeholders should be named not numbered */ 

    OR text REGEXP '\&(nbsp|gt|lt|amp|quot|tab|copy);' 
    /* HTML entities should be escaped by the code, here we need only Unicode */ 

    OR text REGEXP '%[0-1\.\$\*][sdifFeEgGxXocpn)]' 
    /* detect printf() placeholders */ 
関連する問題