【问题标题】:Regular expression for some match in phpphp中某些匹配的正则表达式
【发布时间】:2017-11-15 07:40:30
【问题描述】:

我有一个下面的正则表达式

[^|]+(|[^|]+){15}

下面一行

|     1 |  2567 | Алма-атинська(І) вул.                     | 2     | 2      |5678     |Типовий лічил-|Санвузол          | 15.12.2016 | 10.11.2016 | 10.11.2020 | 23.10.2017 |            |    43.00 |bot       |

它工作正常,我得到了“|”之间的所有文本,但我怎样才能为这些匹配传递任何字符串?例如,修剪所有的退格,或删除一些子环。

【问题讨论】:

  • 所以你想删除整个字符串之间的多余空格?
  • 请提供您希望看到的输出
  • 你的正则表达式等于[^|]+,问题不清楚。
  • @pr1nc3,修剪退格,格式如下:$m[0] = 1; $m[1] = 2567; $m[2] = Алма-атинська; - 在'('之前获取文本。等
  • “我怎样才能通过这个比赛的任何常规”。这到底是什么意思?

标签: php regex preg-match


【解决方案1】:

你可以explode(),后跟trim()删除额外的空格等。最后使用array_filter从数组中删除空白值:

$str = '|     1 |  2567 | Алма-атинська(І) вул.                     | 2     | 2      |5678     |Типовий лічил-|Санвузол          | 15.12.2016 | 10.11.2016 | 10.11.2020 | 23.10.2017 |            |    43.00 |bot       |';
$arr = array_filter(array_map(function($value){return trim($value);},explode('|', $str)));
print_r($arr);

输出:

Array ( [1] => 1 [2] => 2567 [3] => Алма-атинська(І) вул. [4] => 2 [5] => 2 [6] => 5678 [7] => Типовий лічил- [8] => Санвузол [9] => 15.12.2016 [10] => 10.11.2016 [11] => 10.11.2020 [12] => 23.10.2017 [14] => 43.00 [15] => bot )

【讨论】:

  • 但是如果字符串不包含这种模式,我该如何转义呢?例如这一行:$str = "+-------+--------------+-------------------------------------------+-------+--------+--------------+--------------+------------------+----------------------------------------------------------------+----------+-----------------+";
  • 你问的问题是关于空间的。这是一个完全不同的字符串,根本没有空格,而且实际上有 + 和 - 符号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-22
  • 1970-01-01
  • 2020-08-06
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多