我正在尝试识别评论中包含多个空格的字段,例如'this lhas three spaces'
使用这个我可以获得两个空格的任何东西,但希望能够获得2个或更多:
select * from labtec.spaces
where REGEXP_LIKE(SPACES, '[[:space:]]{2}');
有什么建议吗?
答案 0 :(得分:1)
where REGEXP_LIKE(SPACES, '[[:space:]][[:space:]]+');
答案 1 :(得分:1)
我相信你可以:
select * from labtec.spaces
where REGEXP_LIKE(SPACES, '[[:space:]]{2,}');
请注意逗号。
对于“三到五”,您可以使用{3,5}
,“两个或更多”{2,}
,“八个或更少”{,8}
答案 2 :(得分:1)
您不需要检查两个或多个字符 - 检查两个字符就足以过滤行,因为如果有三个字符,那么仅匹配其中两个字符将与匹配两个或更多字符一样有效
这将找到具有两个或更多(连续或非连续)空格CHR(32)
字符的字符串(不使用正则表达式):
SELECT *
FROM labtec.spaces
WHERE INSTR( spaces, ' ', 1, 2 ) > 0
这将找到两个或多个连续空格CHR(32)
字符的位置:
SELECT *
FROM labtec.spaces
WHERE INSTR( spaces, ' ' ) > 0
如果你想要任何两个(或更多)连续的空格字符,那么你只需要检查两个匹配的字符:
SELECT *
FROM labtec.spaces
WHERE REGEXP_LIKE( spaces, '\s\s' ) -- Or, using POSIX syntax '[[:space:]]{2}'
更新 - 前导和尾随空格
SELECT *
FROM labtec.spaces
WHERE SUBSTR( spaces, 1, 2 ) = ' ' -- at least two leading spaces
OR SUBSTR( spaces, -2 ) = ' ' -- at least two trailing spaces
或者,使用(perl-like)正则表达式:
SELECT *
FROM labtec.spaces
WHERE REGEXP_LIKE( spaces, '^\s\s|\s\s$' )