1

我有一个问题,我需要返回一个存在于固定子字符串之后的数值,而不管它周围的字符串中的其他字符如何。我有点在那里,因为以下工作。

$string = "Created Ticket_Id#234 (Some info)";
preg_match("/Ticket Id_#([0-9]+\s)/", $string, $res);
print $res[1];

Outputs: 234

但是当我得到如下字符串时。

$string = "Created Ticket_Id#234";
preg_match("/Ticket Id_#([0-9]+\s)/", $string, $res);
print $res[1];

Outputs: nothing

有没有更好的方法可以在不寻找空白的情况下做到这一点?

4

3 回答 3

3

是的,只需使用\b,单词边界特殊字符类,而不是\s.

所以你的模式是:

/\bTicket_Id#([0-9]+)\b/

请注意,我将特殊字符类从捕获括号中拉出,因为您不需要捕获它。

我还注意到你的字符串有Ticket_Id#234,而你的正则表达式有Ticket Id#234。您应该根据实际情况更改正则表达式中的下划线。

于 2013-01-15T00:47:58.217 回答
1

只需删除最终\s

取决于字符串或正则表达式是否正确

/Ticket_Id#([0-9]+)/

或者

/Ticket Id_#([0-9]+)/

这将在找到的最后一个数字处停止并返回搜索到的数字。

于 2013-01-15T00:47:37.153 回答
0

一些。您可以使用单词边界:

"/Ticket Id_#([0-9]+)\b/"

检查字符串的结尾:

"/Ticket Id_#([0-9]+)(\s|$)/"

或者只是收集所有数字:

"/Ticket Id_#([0-9]+)/"
于 2013-01-15T00:47:05.857 回答