繁体   English   中英

PHP preg_replace正则表达式,获取括号中可能包含或不包含_和-的数字

[英]PHP preg_replace regex, get number between parenthesis that might or might not contain _ and - sign

这真让我发疯! 我需要一个正则表达式来从字符串中提取数字。 该数字可能包含-(减号)或_(下划线)符号,最好使用preg_replace。

示例字符串:“ 这是1个示例(文本),带有(数字)(01230_12-3) ”。

我需要提取的是(01230_12-3),但没有括号。

到目前为止,这就是我所拥有的:

$FolderTitle[$Counter]) = "This is 1 example (text) with a (number)(01230_12-3)";
$FolderNumber[$Counter] = preg_replace("/([^0-9-_])/imsxU", '', $FolderTitle[$Counter]);
  • 当使用preg_match() ,输出变量是必需的,因此我使用速记条件来确定是否存在匹配项,并将必要的值设置为echo。
  • 您需要匹配前导字符(然后用\\K 忘记它,然后匹配尽可能多的合格字符。
  • 这些模式修饰符都不是必需的,因此我删除了它们。
  • 您可以将我的回声替换$FolderNumber[$Counter] =
  • 模式中的前导括号必须使用\\进行转义。
  • \\d[0-9]相同。

代码:( 演示

$Counter = 0;
$FolderTitle[$Counter] = "This is 1 example (text) with a (number)(01230_12-3)";
echo preg_match("/\(\K[-\d_]+/", $FolderTitle[$Counter], $out) ? $out[0] : 'no match';

输出:

01230_12-3

暂无
暂无

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

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