2013-10-03 2 views
1

Я пишу скрипт php, где мне нужно создать правило регулярных выражений, чтобы соответствовать двум типам строк (string1 и string2 в нижнем коде), а совпадающее число должно быть в $ соответствует [1] (не должно быть совпадений [2]).PHP регулярное выражение для сопоставления числа в двух предложениях

<?php 
$ticketNumber1 = $ticketNumber2 = ''; 
$string1 = "[Ticket ID: 309972] New Support Ticket Opened"; 
$string2 = "Ticket #: 656398"; 
$regex = "/Ticket #|ID: (\d+)/"; 
if(preg_match($regex, $string1, $matches)) 
{ 
     $ticketNumber1 = $matches[1]; 
} 
if(preg_match($regex, $string2, $matches)) 
{ 
     $ticketNumber2 = $matches[1]; 
} 
echo "TN1: $ticketNumber1\n"; 
echo "TN2: $ticketNumber2"; 
echo "\n"; 
?> 

Может ли кто-нибудь помочь мне в этом? Каким должно быть регулярное выражение, которое будет использоваться для получения результата?

Просьба помочь.

+0

Почему ** ** обязательно это быть в '$ спичек [1]'? –

+0

Это немного запутанно. Вы хотите, чтобы правило соответствовало двум типам строк? Строки1 и 2 выглядят совсем по-другому. И что такое сделка с сопоставимыми цифрами? Вы хотите только числа, записанные в регулярном выражении? Вы хотите, чтобы вещи были включены из строки 1 в регулярное выражение для проверки строки 2? Формулировка делает это очень запутанным в том, что на самом деле проблема. – Walls

ответ

4

Вы должны ограничить сферу действия оператора или с использованием не-захвата группы:

/Ticket (?:#|ID): (\d+)/ 

regex101 demo

+0

Ничего себе! это работает. Спасибо :) – Kladizkov

+1

@ Kladizkov, так как вы новичок, обязательно отметьте как ответ, так после 15 минут. –

+0

@ Kladizkov Добро пожаловать :) – Jerry

Смежные вопросы