0

正規表現を使用して文字列内の単語を検索する方法と、この文字列内にない単語を検索するにはどうすればよいですか?

文字列はMysqlクエリです

SELECT 
  id,
  name,
  desc,
  (SELECT id as lid FROM comments WHERE lid = id order by id desc limit 1) as lid_com
 FROM posts limit 3

ここで文字列の最後の制限を検索したい

文字列は

  limit 3
  limit 3, 3
  limit 3 , 3
  limit 3 ,3

3ここでは任意の数にすることができます

私はこの正規表現を試しましたが、私は初心者です

"/ limit [0-9] {0,9} + \、[0-9] {0,9} / i $"

これどうやってするの

ありがとうございました

4

4 に答える 4

1

LIMIT常に最後の SQL ステートメントであるかどうかを覚えていないので、使用します

/limit\s+(\d+)(?:\s*,\s*(\d+))?(?=[^\n]+\Z)/mi
于 2012-04-09T12:56:44.877 に答える
1
"/limit[\s]+[\d]+[\s]*,[\s]*[\d]+$/i"

これは、大文字と小文字を区別せずに検索します。

  • 「限界」
  • 1 つ以上の空白
  • 1桁以上
  • ゼロ個以上の空白
  • コンマ
  • ゼロ個以上の空白
  • 1桁以上
  • 文字列の最後に
于 2012-04-09T12:51:34.397 に答える
1
$string = 'SELECT
  id,
  name,
  desc,
  (SELECT id as lid FROM comments WHERE lid = id order by id desc limit 1) as lid_com
 FROM posts limit 3 ,3';

echo preg_match('/(limit)\s\d(((\,\s)|(\s\,\s)|(\s\,))\d)?$/i', $string, $matches);  //1
print_r($matches); //$matches['0'] == 'limit 3 ,3'
于 2012-04-09T12:53:11.843 に答える
0

この条件を試してください-

SELECT * FROM table WHERE column
  REGEXP '(^limit[[:space:]]+[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+$)|(^limit[[:space:]]+[[:digit:]]+[[:space:]]*$)';

最初の部分は、「limit3,3」のような文字列を検索します-

^limit[[:space:]]+[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+$

2つ目は、「limit3」のような文字列を検索します-

^limit[[:space:]]+[[:digit:]]+[[:space:]]*$
于 2012-04-09T13:03:33.483 に答える