【问题标题】:Regular expression to split by space but ignore double-quotes string正则表达式按空格分割但忽略双引号字符串
【发布时间】:2017-09-02 00:52:01
【问题描述】:

我知道/[\s]+/' 用空格分割字符串。我正在尝试扩展它以忽略双引号内的任何空格。所以我希望 Hello World 被拆分,而不是 "Hello World"

preg_split('/[\s]+/', $string) 是我在 PHP 中使用的表达式。

【问题讨论】:

  • 这个'hello "again we met" and here "I am" '应该怎么拆分?
  • 我只对忽略双引号字符串感兴趣。
  • @chris85 这正是我所需要的。谢谢。
  • 我重新打开这个是因为@chris85 的答案很好,并且从 dup 问题链接中,没有人提到这种简单的方法(答案是匹配所有),他的答案可以在 preg_split 中使用() 我鼓励 chris85 发表他的评论作为答案。
  • @sln 谢谢。我已将评论移至答案。

标签: php regex


【解决方案1】:

您可以使用 PCRE 动词 (*SKIP)(*FAIL) 告诉正则表达式跳过表达式的特定部分。所以:

".*?"(*SKIP)(*FAIL)|\s+

将跳过双引号字符串。这是一个 regex101 演示:

https://regex101.com/r/eBP67C/1/

您可以在此处阅读更多相关信息,http://www.rexegg.com/regex-best-trick.html#pcrevariation

【讨论】:

    猜你喜欢
    • 2014-09-05
    • 2010-11-25
    • 2012-08-03
    • 1970-01-01
    • 2017-11-25
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多