如何将大字符串中的子字符串与正则表达式匹配? [复制]
Posted
技术标签:
【中文标题】如何将大字符串中的子字符串与正则表达式匹配? [复制]【英文标题】:How can i match a substring in a big string with a regex? [duplicate] 【发布时间】:2014-07-22 22:51:48 【问题描述】:我有一个带有端口的 IPv6 地址[2401:2401:2401:2401:2401:2401:2401:2401]:1234
。我只想在 php 中获取 IPv6 地址。我正在尝试做:
$str = "[2401:2401:2401:2401:2401:2401:2401:2401]:1234";
preg_match("[]", $str, $matches);
echo $matches[1];
但这并没有让我得到正确的结果。
我希望matches[1]
只包含"2401:2401:2401:2401:2401:2401:2401:2401"
。
【问题讨论】:
仅供参考:将代码粘贴到问题中,不要使用 pastebin(除非代码方式太大而无法放入问题中,在这种情况下,复制一个 sn -p 进入问题)。 不知道为什么将此问题标记为重复,因为我的问题是要知道 PHP 中的答案而不是常规正则表达式。 一个正则表达式就是一个正则表达式。该问题的答案也应该在这里起作用。 【参考方案1】:您使用的preg_match
不起作用。你需要这样的东西:
preg_match("/\[([0-9a-fA-F:]+)\]/", $str, $matches);
【讨论】:
我的 IPv6 也可以包含字母。[0-9a-fA-F:]+
十六进制
preg_match("/[.*]/", $str, $matches);我运行了这个并得到了matches[0] = [1:2:3:4:5:6],但我也想排除方括号。
试试我现在发布的代码,看看你会在$matches[1]
得到什么
@AdiUlici:我想从结果中排除 [ ] 方括号。知道该怎么做吗?以上是关于如何将大字符串中的子字符串与正则表达式匹配? [复制]的主要内容,如果未能解决你的问题,请参考以下文章