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 这里可以是任何数字

我试过这个正则表达式,但我是初学者

"/ 限制 [0-9]{0,9}+\,[0-9]{0,9} /i$"

我怎样才能做到这一点

谢谢

4

4 回答 4

1
"/limit[\s]+[\d]+[\s]*,[\s]*[\d]+$/i"

这搜索不区分大小写:

  • “限制”
  • 一个或多个空格
  • 一位或多位数字
  • 零个或多个空格
  • 逗号
  • 零个或多个空格
  • 一位或多位数字
  • 在字符串的末尾
于 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 回答
1

不记得了,是否LIMIT总是最后一条 SQL 语句,所以我会使用

/limit\s+(\d+)(?:\s*,\s*(\d+))?(?=[^\n]+\Z)/mi
于 2012-04-09T12:56:44.877 回答
0

试试这个条件 -

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

第一部分找到像'limit 3,3'这样的字符串 -

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

第二个找到像'limit 3'这样的字符串 -

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