Pattern for apostrophe inside quotes

后端 未结 2 796
無奈伤痛
無奈伤痛 2021-01-28 06:02

I am looking for a pattern that can find apostrophes that are inside single quotes. For example the text

Foo \'can\'t\' bar \'don\'t\'

I want to find and replace

相关标签:
2条回答
  • 2021-01-28 06:17

    You can use the following regular expression:

    '[^']+'\s|'[^']+(')[^' ]+'
    

    it will return 3 matches, and if capture group 1 participated in the word, it will be the apostrophe in the word:

    • 'foo'
    • 'can't'
    • 'don't'

    demo

    How it works:

    • '[^']+'\s
      • ' match an apostrophe
      • [^']+ followed by at least one character that isn't an apostrophe
      • ' followed by an apostrophe
      • \s followed by a space
    • | or
    • '[^']+(')[^' ]+'
      • ' match an apostrophe
      • [^']+ followed by at least one character that isn't an apostrophe
      • (') followed by an apostrophe, and capture it in capture group 1
      • [^' ]+ followed by at least one character that is not an apostrophe or a space
      • ' followed by an apostrophe
    0 讨论(0)
  • 2021-01-28 06:28

    I believe you need to require "word" characters to appear before and after a ' symbol, and it can be done with a word boundary:

    \b'\b
    

    See the regex demo

    To only match the quote inside letters use

    (?<=\p{L})'(?=\p{L})
    (?<=[[:alpha:]])'(?=[[:alpha:]])
    (?U)(?<=\p{Alpha})'(?=\p{Alpha})  # Java, double the backslashes in the string literal
    

    Or ASCII only

    (?<=[a-zA-Z])'(?=[a-zA-Z])
    
    0 讨论(0)
提交回复
热议问题