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