Regex how to match all punctuations but exclude some conditions

后端 未结 2 1045
逝去的感伤
逝去的感伤 2021-01-14 00:13

I can use \\p{Punct} to match all punctuations(including underscore).

And I wanted to exclude all apostrophes strictly inside a word.

相关标签:
2条回答
  • 2021-01-14 00:33

    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.

    0 讨论(0)
  • 2021-01-14 00:47

    You can combine three conditions here.

    1. Match all punctuation except apostrophe ' using [\p{Punct}&&[^']]

    2. Match all apostrophe not followed by a letter.

    3. 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

    0 讨论(0)
提交回复
热议问题