所以我需要从字符串中提取票号“Ticket#999999”。我该如何使用正则表达式来执行此操作。
如果我在 Ticket#9999 中有多个号码,我当前的正则表达式可以正常工作。但是如果我只有 Ticket#9,它就不起作用了,请帮忙。
当前正则表达式。
preg_match_all('/(Ticket#[0-9])\w\d+/i',$data,$matches);
谢谢。
最佳答案
在您的模式中,[0-9]
匹配 1 个数字,\w
匹配另一个数字,\d+
匹配 1+ 个数字,因此#
后需要 3 位数字。
使用
preg_match_all('/Ticket#([0-9]+)/i',$data,$matches);
这将匹配:
Ticket#
- 文字字符串Ticket#
([0-9]+)
- 第 1 组捕获 1 个或多个数字。
PHP demo :
$data = "Ticket#999999 ticket#9";
preg_match_all('/Ticket#([0-9]+)/i',$data,$matches, PREG_SET_ORDER);
print_r($matches);
输出:
Array
(
[0] => Array
(
[0] => Ticket#999999
[1] => 999999
)
[1] => Array
(
[0] => ticket#9
[1] => 9
)
)
关于php - 在 preg_match_all() 中需要一些关于正则表达式的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43783937/