Regex To Match Words And Those With An Apostrophe
Update: As per comments regarding the ambiguity of my question, I've increased the detail in the question. (Terminology: by words I am refering to any succession of alphanumerical
Solution 1:
Try using this:
(?=.*\w)^(\w|')+$
'bout # pass
it's # pass
persons' # pass
'# fail''# fail
Regex Explanation
NODE EXPLANATION
(?= look ahead to see if there is:
.* any character except \n (0 or more times
(matching the most amount possible))
\w word characters (a-z, A-Z, 0-9, _)
) end of look-ahead
^ the beginning of the string
( group and capture to \1 (1 or more times
(matching the most amount possible)):
\w word characters (a-z, A-Z, 0-9, _)
| OR
' '\''
)+ end of \1 (NOTE: because you're using a
quantifier on this capture, only the LAST
repetition of the captured pattern will be
stored in \1)
$ before an optional \n, and the end of the
string
Solution 2:
/('\w+)|(\w+'\w+)|(\w+')|(\w+)/
- '\w+ Matches a ' followed by one or more alpha characters, OR
- \w+'\w+ Matche sone or more alpha characters followed by a ' followed by one or more alpha characters, OR
- \w+' Matches one or more alpha characters followed by a '
- \w+ Matches one or more alpha characters
Solution 3:
How about this?
'?\b[0-9A-Za-z']+\b'?
EDIT: the previous version doesn't include apostrophes on the sides.
Solution 4:
I submitted this 2nd answer coz it looks like the question has changed quite a bit and my previous answer is no longer valid. Anyway, if all conditions are listed up, try this:
(((?<!')')?\b[0-9A-Za-z]+\b('(?!'))?|\b[0-9A-Za-z]+('[0-9A-Za-z]+)*\b)
Solution 5:
This works fine
('*)(?:'')*('?(?:\w+'?)+\w+('\b|'?[^']))(\1)
on this data no problem
'bou
it's
persons'
'open'
open
foo''bar
''foo
bee''
''foo''
'''
on this data you should strip result (remove spaces from matches)
'bou it's persons' 'open' open foo''bar ''foo ''foo'' '''
(tested in The Regulator, results in $2)
Post a Comment for "Regex To Match Words And Those With An Apostrophe"