【问题标题】:RegEx match only strings that are not starting with quotation markRegEx 仅匹配不以引号开头的字符串
【发布时间】:2013-02-21 11:17:23
【问题描述】:

我有字符串列表(在 PHP 中):

a2c

bdR

dDv

"ddv

啊啊

“啊啊”

什么是正则表达式只匹配不以引号开头的字符串?在这个例子中,有四个这样的字符串。所以,我只需要匹配四个字符串(计算它们)。对于这个列表,我正在使用循环,但我现在只需要 RegEx。谢谢!

我试过了

[^"]([a-zA-Z0-9]*)*

但它仍然匹配所有字符串,即使是那些以引号开头的字符串。

【问题讨论】:

    标签: php regex string


    【解决方案1】:

    您缺少字符串锚^ 的开头,这意味着您的表达式将匹配一个字符串,如果它出现在其中任何位置。显然,“非引号后跟任何内容,包括字符串结尾”的序列出现在所有示例输入中。

    这个表达式会匹配你想要的:

    ^[^"]
    

    它只匹配第一个字符不是双引号的任何输入。其他角色就不用管了。

    【讨论】:

      【解决方案2】:

      试试看:

      ^[^"](.*)/gm
      

      (如果变量中有多个字符串。)

      【讨论】:

      • 我认为应该是 /^[^"](.*)/m
      • (.*) 有什么想法?有必要吗?在另一个捕获组中捕获所有字符除了第一个是否有用?
      【解决方案3】:
      $strigs_arr       = array();
      foreach($strings as $str){
         //$str         = '"aaa';
         preg_match('/^(?P<string>[^"].*)/',$str,$match);
      
         $strigs_arr[]  = $match['string'];
      }
      echo "<pre>";
      print_r($strigs_arr);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-06
        • 2014-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-24
        • 2020-09-04
        • 1970-01-01
        相关资源
        最近更新 更多