Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式匹配所有未被引号包围的事件,并在字符处停止_Regex_Regex Negation_Regex Group - Fatal编程技术网

Regex 正则表达式匹配所有未被引号包围的事件,并在字符处停止

Regex 正则表达式匹配所有未被引号包围的事件,并在字符处停止,regex,regex-negation,regex-group,Regex,Regex Negation,Regex Group,欧洲已经很晚了,我无法运行正则表达式:-( 我想匹配所有文本,即而不是加引号 输入:哦,是的,这个;输入;‘带引号’;可以;‘非常’;狡猾;‘相信我’;男孩 很容易匹配所有用引号括起来的文本 但是我想要的是相反的。而且匹配应该被分割;以便我得到以下匹配: 哦,是的,这个 输入 能 狡猾的 男孩 在我生气之前有什么想法吗 提前thx!我想你可以使用这样的技巧: '[^;]*'(?=;|$)|([^;]+)(?=;|$) 说明: '[^;]*'(?=;|$) => finding

欧洲已经很晚了,我无法运行正则表达式:-( 我想匹配所有文本,即而不是加引号

输入:哦,是的,这个;输入;‘带引号’;可以;‘非常’;狡猾;‘相信我’;男孩

很容易匹配所有用引号括起来的文本

但是我想要的是相反的。而且匹配应该被分割;以便我得到以下匹配:

  • 哦,是的,这个
  • 输入
  • 狡猾的
  • 男孩
  • 在我生气之前有什么想法吗


    提前thx!

    我想你可以使用这样的技巧:

    '[^;]*'(?=;|$)|([^;]+)(?=;|$)
    
    说明:

    '[^;]*'(?=;|$)      => finding words between `'` and ended with `;` or end of text, but not group it
    |                   => or
    ([^;]+)(?=;|$)      => finding other words ended with `;` or end of text, but grouped
    
    现在,您可以使用
    $1
    捕获您想要的内容

    您可以使用正则表达式

    (?<=;|^)[^;'][^;]*[^;'](?=;|$)
    

    (?如果先用分隔符
    将字符串拆分为一个数组,然后检查每个数组元素是否以
    开头和结尾,或者只使用正则表达式
    (?
    (?可以简化为
    (?:'[^;]+'([^;]+)(?=;;$)
    没有代码重复。
    (?=;)
    有两次,一次删除它简化了正则表达式的可维护性,并减少了3个字符。我确实意识到这个解决方案只需要少量的额外步骤,但代码的可维护性对用户来说可能更重要。它仍然应该作为一个选项提供给用户,因此我认为建议一个simplif没有任何害处你的答案上面有ied模式。