我試圖標識註釋中有多個空格的字段,例如'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:]]或''。 –