PHP preg_替换正则表达式,获取括号之间可能包含或可能不包含u和-sign的数字

PHP preg_替换正则表达式,获取括号之间可能包含或可能不包含u和-sign的数字,php,regex,preg-replace,Php,Regex,Preg Replace,这简直快把我逼疯了!我需要一个正则表达式来从字符串中提取数字。数字可能包括-(减号)或(下划线)符号,最好使用preg_替换 示例字符串:“这是一个带有(数字)(01230_12-3)的示例(文本)” 我需要提取的是(01230_12-3),但没有括号 到目前为止,我的情况如下: $FolderTitle[$Counter]) = "This is 1 example (text) with a (number)(01230_12-3)"; $FolderNumber[$Counter] = p

这简直快把我逼疯了!我需要一个正则表达式来从字符串中提取数字。数字可能包括-(减号)或(下划线)符号,最好使用preg_替换

示例字符串:“这是一个带有(数字)(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]
    相同
代码:()

输出:

01230_12-3

我们在@Leon做得怎么样?你的项目中有没有我的答案不适用的输入字符串?多亏了这一点,我现在开始对整个regex魔法有了更多的了解。这个例子由于某种原因没有被理解;“Naar huis遇到pijnstillers na een operatie Afd麻醉学(0000485-08_16)(麻醉学)(vier TABEL)”我的错,在那之前我又换了一个pre_,它很有魅力!谢谢你的教训!)
01230_12-3