匹配由空格包围的单词

时间:2018-04-09 11:50:17

标签: php regex

我的要求是:

  • 以char开头,以空格结尾
  • 或以空格开头,以空格结尾

例如:

$string = "I am using php regular expressions";

输出:

$out = ["I", "am", "using", "php", "regular"]; #expected output

我努力解决这个问题:

preg_split("/\s+/",$string);

哪个用空格拆分字符串,但我想要前面提到的输出。

1 个答案:

答案 0 :(得分:2)

  

...(1)以char开头,以空格结束,(2)以。开头   空间和空间结束?

首先,您的要求应该真正转移到问题背景中。尝试找到更好的标题。但是,根据第二个要求,下面的输入字符串不应该匹配:

string(5) " I\nam"

但这应该:

string(3) " I "

当前接受的答案不包括哪些内容,如果标题中的 char ,则表示英文字母中的字母,这可能是一个解决方案:

preg_match_all('~(?i)\b[a-z]\S*(?=\h)~', $string, $matches);

否则请使用\S+(?=\h)

故障:

  • (?i)启用不区分大小写的标记
  • \S匹配非空白字符
  • (?=\h)积极向前看。如果跟随字符是水平空格,则断言

Live demo