Oskar Eriksson
Oskar Eriksson

Reputation: 855

Regex: Match double single quote inside string

I want a regex that will match for example 'panic can''t happen' as panic can''t happen. Double single quotes are just allowed if they're next to each other, 'panic can't' happen' sgould be divided into two strings, panic can and happen.

I got \'[^\']*[\'\']?[^\']\' so far but it won't work as expected.

Thanks!

Upvotes: 1

Views: 2288

Answers (2)

Tafari
Tafari

Reputation: 3059

Well using this pattern will capture double single quotes or split when they are not next to each other:

PATTERN

'((?:''|[^']+)+)'

INPUT

'panic can't' happen'

OUTPUT

Match 1: 'panic can' 
Group 1: panic can

And:

Match 2: ' happen'
Group 1:  happen

2 case

INPUT

'panic can''t happen'

OUTPUT

Match 1: 'panic can''t happen' 
Group 1: panic can''t happen

Upvotes: 0

Ibrahim Najjar
Ibrahim Najjar

Reputation: 19423

You can try the following:

'(?:[^']+|'')+'
  • ': Matches a literal '.
  • [^']+: Matches one or more characters which are not '.
  • '': Matches double ''.
  • (?:[^']+|'')+: Matches one or more occurrences of the preceding two patterns.
  • ' matches the closing '.

Regex101 Demo

Upvotes: 4

Related Questions