Re: Regular Expression Match Operator escape character
От | Jasen Betts |
---|---|
Тема | Re: Regular Expression Match Operator escape character |
Дата | |
Msg-id | [email protected] обсуждение исходный текст |
Ответ на | Regular Expression Match Operator escape character ("Gnanakumar" <[email protected]>) |
Список | pgsql-sql |
On 2010-12-08, Gnanakumar <[email protected]> wrote: > Hi, > > We're running PostgreSQL v8.2.3 on RHEL5. > > In some places in our application, we use Regular Expression Match Operator > (~* => Matches regular expression, case insensitive) inside WHERE criteria. > > Example: > SELECT ... > FROM ... > WHERE (SKILLS ~* > '(^|\\^|\\||[^0-9|^a-z|^A-Z]|$)C#(^|\\^|\\||[^0-9|^a-z|^A-Z]|$)' > OR SKILLS ~* > '(^|\\^|\\||[^0-9|^a-z|^A-Z]|$).NET(^|\\^|\\||[^0-9|^a-z|^A-Z]|$)') > > In this case, we're trying to search/match for either "C#" OR ".NET" in > SKILLS column. > > My question here is, do I need to escape the characters "#" and "." here? yes. ( '.' especially, I don't think '#' has a special meaning in regex) but as postgres uses posix extended regex simply escaping every non-letter character is safe. (^|\\^|\\||[^0-9|^a-z|^A-Z]|$) seems to be another way to write (^|$|[^0-9a-zA-Z]) both of which are locale dependant but that may not be an issue for you. -- ⚂⚃ 100% natural
В списке pgsql-sql по дате отправления: