【问题标题】:Regex, can't exclude colon (:)正则表达式,不能排除冒号 (:)
【发布时间】:2020-10-07 21:03:27
【问题描述】:

我正在尝试从结果中排除冒号。

示例: 文字测试:看这个+例子

我想捕捉“看看这个”,但/([^:].*(?=+))/ 不起作用。

我错过了什么?我想捕获冒号 (:) 之后和加号之前的所有内容。

谢谢

【问题讨论】:

  • 天啊,我做错了什么?哈哈
  • 您的正则表达式无效。你需要像这样逃避+\+
  • 另外,请查看regex101.com。调试正则表达式非常有帮助。
  • 谢谢玛丽亚!你我们都是救生员:)
  • 另一个问题,现在我有我想要的,但开头和结尾都有空格,我该如何删除它?

标签: regex


【解决方案1】:

你可以试试这个:

([^:]*(?=\+))


 you also need to put escape  ⬇  for + sign
                    ([^:].*(?=\+))
You do not need this dot ^ 

要回答您的评论,您可以试试这个:

:\s*(.*?)\s*\+

你的文字被捕获group 1

<?php
$re = '/:\s*(.*?)\s*\+/';
$str = 'Text Test: Look at this   + example';
preg_match_all($re, $str, $matches);
echo $matches[1][0];
?>

Run it here

Explanation

【讨论】:

  • 谢谢!我在我的正则表达式中转义了加号,但我添加了点 (.),它是破坏正则表达式的点!谢谢!
  • 另一个问题,现在我有我想要的,但开头和结尾都有空格,我该如何删除它
  • 谢谢 Maverick,在我的 PHP 脚本中它返回冒号和加号我做错了什么?
  • 我猜这是完全匹配,您应该在数组的索引 1 中获得所需的匹配
猜你喜欢
  • 1970-01-01
  • 2016-11-27
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 2019-01-13
  • 2011-04-13
相关资源
最近更新 更多