代码之家  ›  专栏  ›  技术社区  ›  Cdhippen

两个单引号之间的匹配,如果两个单引号出现在一行中,或者“如果”出现在中间,则继续匹配吗?

  •  0
  • Cdhippen  · 技术社区  · 6 年前

    我正在尝试设置一个将匹配的正则表达式模式匹配 'hello' 'hello'blah blah blah 'hello' 但这将匹配整个字符串 'hello''hello' 还有完整的字符串 “你好”,“你好” 'hello'.'hello' .

    简单地说,我想在有单引号时开始匹配,然后继续匹配,直到遇到另一个单引号,除非紧跟其后有另一个单引号,或者如果有 .' 之后,在这种情况下,我希望继续匹配,直到遇到一个不符合这些条件的引用。

    \'[^\']*\'

    我已经在这里阅读了解决方案: How to replace single quote to two single quotes, but do nothing if two single quotes are next to each other in perl 但是它不太适合我要找的东西,也不能匹配中间的东西。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Nick SamSmith1986    6 年前

    您可以使用此正则表达式:

    ('[^']+'(?:\.?'[^']+')*)
    

    Demo on regex101

        2
  •  0
  •   obfish    6 年前
    '.*?'(\.?'.*?')*
    

    如果我正确理解了您的需求,那么构建上述正则表达式很容易。