I can use \\p{Punct} to match all punctuations(including underscore).
And I wanted to exclude all apostrophes strictly inside a word.
You could group all punctuations, you are interested in, manually and exclude the apostrophe. Then combine that group with your rule for finding the right apostrophes (that are not within a word) by an OR.
You can combine three conditions here.
Match all punctuation except apostrophe ' using [\p{Punct}&&[^']]
Match all apostrophe not followed by a letter.
Match all apostrophe not preceded by a letter.
Regex: [\p{Punct}&&[^']]|(?<![a-zA-Z])'|'(?![a-zA-Z])
Explanation:
[\\p{Punct}&&[^']] excludes apostrophe from punctuation class.
(?<![a-zA-Z])' matches apostrophe not preceded by a letter.
'(?![a-zA-Z]) matches the apostrophe not followed by a letter.
RegexPlanet Fiddle