Reputation: 855
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
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
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 '
.Upvotes: 4