我试图标识注释中有多个空格的字段,例如'this lhas three spaces'
Oracle使用REGEXP_LIKE标识多个空格
使用这个我可以用两个空格得到任何东西,而是想能够得到2个或更多:
select * from labtec.spaces
where REGEXP_LIKE(SPACES, '[[:space:]]{2}');
有什么建议?
我试图标识注释中有多个空格的字段,例如'this lhas three spaces'
Oracle使用REGEXP_LIKE标识多个空格
使用这个我可以用两个空格得到任何东西,而是想能够得到2个或更多:
select * from labtec.spaces
where REGEXP_LIKE(SPACES, '[[:space:]]{2}');
有什么建议?
where REGEXP_LIKE(SPACES, '[[:space:]][[:space:]]+');
我相信,你可以:
select * from labtec.spaces
where REGEXP_LIKE(SPACES, '[[:space:]]{2,}');
注意逗号。
“三到五年之间”你会用{3,5}
,为“两个或更多” {2,}
,对“八少” {,8}
你并不需要检查两个或更多的字符 - 检查因为如果有三个字符,那么只匹配其中的两个就可以工作,就像匹配两个或更多个字符一样。
这将找到它具有两个或多个(连续或不连续的)空间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)的正则表达式:
SELECT *
FROM labtec.spaces
WHERE REGEXP_LIKE(spaces, '^\s\s|\s\s$')
谢谢。我是否也可以在同一个REGEXP_LIKE表达式中包含对前导空格和尾随空格的测试? –
良好,即工作一种享受。还有一件事,我是否也可以在使用'(^ | $)'时包含尾部和前导空格' –
当然,我认为你会''(^ | $ | [[:space:]] {2,})''。你想清楚你是否想在整个我猜中使用'[[:space:]]或''。 –