簡體   English   中英

正則表達式提取字符串部分

[英]regex to extract string part

我有這個字符串:

為您提供一條錯誤的消息“ 500從雙執行'select DIVISIONTEST(4,0)”時發生異常:SQLSTATE [HY000]:常規錯誤:20000 OCIStmtExecute:ORA-20000:Bienessayé!ORA-06512:à“ FOO .DIVISIONTEST”,第8行(ext \\ pdo_oci \\ oci_statement.c:148)”。

我只想顯示這一部分: Bien essayé! 這部分之前或之后沒有任何內容。

此字符串由以下項生成:

$exception->getMessage()

您可以幫我使用正則表達式嗎? 謝謝

編輯:對不起,自定義消息將更改。 我應該更精確一些。 我正在尋找一種在ORA-20000:ORA:之后收到消息的方法。 我正在嘗試從PL / SQL請求中引發異常。 引發的錯誤是自定義消息

好吧,因為您只想匹配一種情況,所以可以使用: preg_match
參見PHP手冊: http//ir1.php.net/preg_match

例:

$subject = $exception->getMessage();
$pattern = '/Bien essayé!/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

編輯:原始帖子更改后更新:

$re = '/OCIStmtExecute: ORA-[0-9]+: (.+) ORA-[0-9]+:/'; 
$subject = $exception->getMessage();

preg_match($re, $subject, $matches);
print_r($matches);
<?php 
if (preg_match("/Bien essayé!/i",$exception->getMessage())
   echo : "Bien essayé!";
else
   echo "Pas bien essayé :-D ";
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM