我有一个可能包含单词,数字等的文本。我想要的是匹配括号内的数字,但不要像这样匹配它们:
Lorem 43 ipsum dolor 1坐下来(355)一些 其他文字。
我想匹配数字355,但由于有数字没有括号,我得到这个:
\(\b\d+\b\) - 1st variant
\(.+?\) - 2nd variant
据推测我得到了(355),但我的php脚本已经处于高负荷状态,匹配删除括号不是一个选项。
答案 0 :(得分:3)
如果您愿意,可以删除第一个中的\b
;他们不会伤害任何东西,但他们是多余的。要捕获数字并排除括号,请在数字周围使用未转义的括号:
\((\d+)\)
这将捕获数字供以后使用。例如:
preg_match('/\((\d+)\)/', $sentence, $matches);
var_dump($matches[1]);
答案 1 :(得分:0)
只是匹配您的第一个变体,但只捕获组中的数字,如此
\((\d+)\)
我认为PHP支持命名的捕获组,所以你可以命名它,所以你不是通过索引来查找它,就像我想的那样
preg_match('/\((?<MatchedNumber>\d+)\)/', $searchText, $groups);
print_r($groups['MatchedNumber']);