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 に答える