【问题标题】:PHP preg_split regex does not split with dotPHP preg_split 正则表达式不与点分割
【发布时间】:2013-03-17 10:37:33
【问题描述】:

我正在使用以下正则表达式将字符串拆分为数组。一切都很好,但由于某种原因它没有与\.(space) 分开。我需要如何对其进行更改才能使其正常工作?

  $sentences  = preg_split(" / (\. |, and|, or|, but|, nor|, so|, for|, yet|after|although|as|as if|as long as|because|before|even if|even though|if|once|provided|since|so that|that|though|till|unless|until|what|when|whenever|wherever|whether|while) /",$sentences); 

【问题讨论】:

  • 真的要匹配(空格)(点)(空格)吗?
  • @ÁlvaroG.Vicario 我想匹配(点)(空格)
  • @bicycle no / (\. |, 总是需要一个前缀空格 \s.\s/(\. |, 会修复它

标签: php regex preg-split


【解决方案1】:

您的空格是这里的问题。正则表达式考虑到了这一点,因此将其更改为:

$sentences = preg_split("/(\. |, and|, or|, but|, nor|, so|, for|, yet|after|although|as|as if|as long as|because|before|even if|even though|if|once|provided|since|so that|that|though|till|unless|until|what|when|whenever|wherever|whether|while)/",$sentences); 

注意第一个 / 之后和最后一个 / 之前的空格是如何被删除的。

【讨论】:

  • @Allendar 我还不能,在你接受之前有一个最小的延迟:)
【解决方案2】:

由于您使用双引号,因此您必须对点进行双重转义,因此 \\. 而不仅仅是 \.

【讨论】:

  • 这不是真的!只有实际的反斜杠字符才需要双重转义。
  • @JonathanCairns 你确实想要在这种情况下一个实际的反斜杠
  • 可能有误解:@bicycle 你想在文字上拆分\.吗?
  • 转义斜线用于您要转义的元素。如果您想转义 ` for example in PHP you need \\\\` 以两次避免 RegEx 的混淆并两次转义字符串。 \\. 将匹配 `\` 后跟一个字母数字字符。
  • 哎呀,StackOverflow 标签甚至错过了转义:P。我的意思是 \\\\ 转义反斜杠和 \\.将匹配 "\" 后跟任何字母数字字符。
猜你喜欢
  • 2019-06-24
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 2022-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多