因此我需要从字符串中提取票号“Ticket#999999”..如何使用正则表达式执行此操作。
如果我在Ticket#9999中有多个号码,那么我当前的正则表达式正在运行..但是如果我只有9号票据,它就不起作用请帮助。
当前的正则表达式。
preg_match_all('/(Ticket#[0-9])\w\d+/i',$data,$matches);
谢谢。
答案 0 :(得分:3)
在您的模式中[0-9]
匹配1位数,\w
匹配另一位数,\d+
匹配1位数,因此#
后需要3位数。
使用
preg_match_all('/Ticket#([0-9]+)/i',$data,$matches);
这将匹配:
Ticket#
- 文字字符串Ticket#
([0-9]+)
- 第1组捕获1个或多个数字。$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
)
)