You can use TRANSLATE to test for the first condition and the other two are simple tests for equality:
SELECT *
FROM your_table
WHERE token = 'Oracle Database Token: -.'
OR token = 'Oracle Database Token: 123456789.'
OR ( token <> 'Oracle Database Token: .'
AND TRANSLATE( token, '_1', '_' ) = 'Oracle Database Token: .' )
Sample Data:
CREATE TABLE your_table ( token ) AS
SELECT 'Oracle Database Token: -.' FROM DUAL UNION ALL
SELECT 'Oracle Database Token: 123456789.' FROM DUAL UNION ALL
SELECT 'Oracle Database Token: 1.' FROM DUAL UNION ALL
SELECT 'Oracle Database Token: 111.' FROM DUAL UNION ALL
SELECT 'Oracle Database Token: 111111.' FROM DUAL UNION ALL
SELECT 'Oracle Database Token: 12111.' FROM DUAL UNION ALL
SELECT 'Oracle Database Token: -12.' FROM DUAL;
Query Output:
| TOKEN |
| :-------------------------------- |
| Oracle Database Token: -. |
| Oracle Database Token: 123456789. |
| Oracle Database Token: 1. |
| Oracle Database Token: 111. |
| Oracle Database Token: 111111. |
db<>fiddle here
You could also write it as a regular expression:
SELECT *
FROM your_table
WHERE REGEXP_LIKE( token, '^Oracle Database Token: (1+|123456789|-)\.$' )
But simple string functions/comparisons might be quicker.