我想解決以下問題:在括號內獲取文字
我通過imap獲取郵件;現在我使用正則表達式來獲取兩個quare括號(Ticket-ID)之間的文本。
例如:[Ticket-ID: 84824] Re:Test
preg_match("/\[Ticket-ID: (\S+)\]/", $mail->subject, $matches)
得到84824的結果 - 但我如何能得到 「回覆:測試」 或只是 「測試」 用PHP?
現在我想得到沒有任何票號的純主題等等。我該如何解決這個問題?
我想解決以下問題:在括號內獲取文字
我通過imap獲取郵件;現在我使用正則表達式來獲取兩個quare括號(Ticket-ID)之間的文本。
例如:[Ticket-ID: 84824] Re:Test
preg_match("/\[Ticket-ID: (\S+)\]/", $mail->subject, $matches)
得到84824的結果 - 但我如何能得到 「回覆:測試」 或只是 「測試」 用PHP?
現在我想得到沒有任何票號的純主題等等。我該如何解決這個問題?
你可以這樣做:
\[[\s\S]+\][\s]*(.*)
示例代碼:
<?php
$str ='[Ticket-ID: 84824] Re:Test';
preg_match('/\[[\s\S]+\][\s]*(.*)/',$str,$matches);
echo $matches[1];
?>
輸出:
Re:Test
如果你只想要Test
,使用下面的正則表達式:
\[[\s\S]+\][\s]*Re:(.*)
$string='[Ticket-ID: 84824] Re:Test';
$bracket_location=strpos($string,'] ');
$subject=substr($string,$bracket_location+2,strlen($string)-$bracket_location+2);
Lo通過你的匹配,你的$主題將給你重新:測試。
嘗試此正則表達式:\[[^:]+:\s*(\d+)\]
$re = "/\\[[^:]+:\\s*(\\d+)\\]/";
$str = "[Ticket-ID: 84824] Re:Test";
preg_match($re, $str, $matches);
像這樣,與捕獲組:['\ [票證ID:(\ S +)\] \ S *(?: (Re)的:)(\ S *)'](https://regex101.com/r/oJ7bX0/2)? –