regex - Removing apostrophes from regrex pattern -
i'm little new regex , have written simple regex retrieve word "preview" from string below.
time: '333333333333333333316:06:55 -232323' permission: 'preview' teacher name: '4444444444444ffffffffffff' student: 'cccccccccccssssssssss' exam score: 'eeeeeeeeeeea'
this regex expression below
permission:\s?'([a-za-z]+)'\s?teacher name i want recreate regex expression not have apostrophes in it.
i plan use regex in regex_substr expression in oracle query , seems not consume regex apostrophe well.
how do that?
i know regex has many formats, if knows better pattern, please feel free suggest.
you can use current regex pattern (corrected per wiktor's comment!) escaping single quotes:
regexp_substr(<your string>, 'permission:\s?''([a-za-z]+)''\s?teacher name') or more cleanly using the alternative quoting mechanism:
regexp_substr(<your string>, q'[permission:\s?'([a-za-z]+)'\s?teacher name]') which lets leave single quotes originally, , put whole thing inside set of delimited single quotes, using delimiter doesn't appear in actual content - i've used square brackets here, q'[ ... ]'. lets whatever inside, ... part, include unescaped single quotes.
demos:
with t (str) ( select q'[time: '333333333333333333316:06:55 -232323' permission: 'preview' teacher name: '4444444444444ffffffffffff' student: 'cccccccccccssssssssss' exam score: 'eeeeeeeeeeea']' dual ) select regexp_substr(str, 'permission:\s?''([a-za-z]+)''\s?teacher name') t; regexp_substr(str,'permission:\s?' ---------------------------------- permission: 'preview' teacher name or:
with t (str) ( select q'[time: '333333333333333333316:06:55 -232323' permission: 'preview' teacher name: '4444444444444ffffffffffff' student: 'cccccccccccssssssssss' exam score: 'eeeeeeeeeeea']' dual ) select regexp_substr(str, q'[permission:\s?'([a-za-z]+)'\s?teacher name]') t; regexp_substr(str,q'[permission:\s ---------------------------------- permission: 'preview' teacher name to word 'preview' can use regexp_replace() back-reference:
with t (str) ( select q'[time: '333333333333333333316:06:55 -232323' permission: 'preview' teacher name: '4444444444444ffffffffffff' student: 'cccccccccccssssssssss' exam score: 'eeeeeeeeeeea']' dual ) select regexp_replace(str, '(.*permission:\s?'')([a-za-z]+)(''\s?teacher name.*)', '\2', 1, 1) t; regexp_ ------- preview or
with t (str) ( select q'[time: '333333333333333333316:06:55 -232323' permission: 'preview' teacher name: '4444444444444ffffffffffff' student: 'cccccccccccssssssssss' exam score: 'eeeeeeeeeeea']' dual ) select regexp_replace(str, q'[(.*permission:\s?')([a-za-z]+)('\s?teacher name.*)]', '\2', 1, 1) t; regexp_ ------- preview
Comments
Post a Comment