繁体   English   中英

如何从字符串中得到一个用括号括起来的数字?

[英]How to get a number wrapped in parentheses from a string?

我有这个代码

$string = "23 asdasdasdasd.sma(33) asda sdas asd 23 2 3 54232 23d asd";

$reg = "??";
preg_match($reg, $string, $matches);
var_dump($matches);

我想得到这个数字: 33

我相信正则表达式应该是这样的

$reg = "\(([0-9]+)\)";

尝试使用模式\\((\\d+)\\)

preg_match("/\((\d+)\)/", $string, $matches);

演示版

第一个捕获组将包含括号内包含的数字。

您也可以使用\\(\\K\\d+(?=\\))

那将匹配:

\(     # Match (
\K     # Reset the starting point of the reported match
\d+    # Match one or more digits
(?=\)) # Positive lookahead that asserts what follows is )
$reg = '/\(\K\d+(?=\))/';

该数字将以$matches[0];

PHP演示

因为您正在代码中调用preg_match() ,并且输入数据只有一个目标编号可用,所以您可以准确地使用这种最快/最简单的模式:

~\\(\\K\\d+~模式演示 )(5个步骤&没有捕获组&没有环顾四周)

模式细分:

~        #pattern delimiter
\(       #match (
\K       #restart the fullstring match (forget previously matched characters)
\d+      #match one or more digits greedily
~        #pattern delimiter

*清楚一点,我想指出的是,我的模式假设紧随(将会紧跟a ) 这就是示例输入所提供的。

如果)要匹配,以保持精度,然后捕获组(Tim的方式)将是下一个最有效的方式。 使用环视的所有正确模式都将比不使用环视的正确模式慢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM