オープンソースコードを参照しています。そこで私はこの種のフィルタを持つSQLを見つけることができます。__ * in Mysqlの正規表現
select sometext from table1,table2 where table1.sometext LIKE
CONCAT('% ',table2.test_keyword,' %') AND table2.test_keyword NOT
REGEXP '__*';
このSQLでは__ *とは何ですか?
オープンソースコードを参照しています。そこで私はこの種のフィルタを持つSQLを見つけることができます。__ * in Mysqlの正規表現
select sometext from table1,table2 where table1.sometext LIKE
CONCAT('% ',table2.test_keyword,' %') AND table2.test_keyword NOT
REGEXP '__*';
このSQLでは__ *とは何ですか?
__*
は、_
の後にゼロ以上の_
sが一致します。
__*
^^^
||\__ (zero or more) ^
|\___ underscore |
\____ underscore, then |
_+
は、同じ仕事をしているだろう。
_+
^^
|\__ (one or more) ^
\___ underscore |
'_'の後に** ** ** **以上の' _'が続きます。 – kennytm
@ケニーTM:それは私が書いたものです! ;) –
単なる1つ以上のアンダースコアです。
パターンが最良として読まれる:
'_'
、ゼロまたはそれ以上のアンダー続く正確に一つのアンダー、'_*'
、。それは基本的にそれに下線を持つ任意の文字列を意味して(、開始マーカーなしで、文字列の任意の場所でパターンに一致しますが、覚えておいてくださいまたは、より正確に、あなた以降」 NOT
、文字列、なし、アンダースコア)を使用しています。
AND table2.test_keyword NOT REGEXP '_'
と同じ効果を得ることができるので、それはまた不必要に複雑です。
正規表現に関する最新のMySQLドキュメントについてはを参照してください(この回答時点では5.6)。
正規表現の本に相談しましたか? –