How can I match double-quoted strings with escaped double-quote characters?

前端 未结 7 1192
既然无缘
既然无缘 2020-12-05 00:08

I need a Perl regular expression to match a string. I\'m assuming only double-quoted strings, that a \\\" is a literal quote character and NOT the end of the string, and tha

相关标签:
7条回答
  • 2020-12-05 00:44

    Try this piece of code : (\".+")

    0 讨论(0)
  • 2020-12-05 00:47

    See Text::Balanced. It's better than reinvent wheel. Use gen_delimited_pat to see result pattern and learn form it.

    0 讨论(0)
  • 2020-12-05 00:47

    RegExp::Common is another useful tool to be aware of. It contains regexps for many common cases, included quoted strings:

    use Regexp::Common;
    
    my $str = '" this is a \" quoted string"';
    if ($str =~ $RE{quoted}) {
      # do something
    }
    
    0 讨论(0)
  • 2020-12-05 00:48

    A generic solution(matching all backslashed characters):

    / \A "               # Start of string and opening quote
      (?:                #  Start group
        [^\\"]           #   Anything but a backslash or a quote
        |                #  or
        \\.              #   Backslash and anything
      )*                 # End of group
      " \z               # Closing quote and end of string
      /xms
    
    0 讨论(0)
  • 2020-12-05 00:55

    How about this?

    /"([^\\"]|\\\\|\\")*"/
    

    matches zero or more characters that aren't slashes or quotes OR two slashes OR a slash then a quote

    0 讨论(0)
  • 2020-12-05 00:55

    Here's a very simple way:

    /"(?:\\?.)*?"/
    

    Just remember if you're embedding such a regex in a string to double the backslashes.

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