2013-06-30 4 views
-4

У меня есть строка:Нахождение смежных терминов

Str1 = "Confidential Design No. PXB1235GHYZ9" 

Эта строка может также возникнуть в приведенных ниже вариантах:

Str2 = "Confidential Design No PXB1235GHYZ9" 

("" уведомление не рядом нет) ИЛИ

Str3 = "Confidential Design PXB1235GHYZ9" 

Учитывая ключевое слово, дизайн, мне нужно извлечь PXB1235GHYZ9. Этот термин всегда имеет длину 12 символов и всегда представляет собой смесь альфой и чисел.

Как написать общий скрипт для обработки всех трех сценариев с помощью RegEx/Perl? Должен ли я разделить их, используя пробел, а затем проверить каждый термин? Или есть более простой способ, которым я могу извлечь «PXB1235GHYZ9», данный Design во всех трех сценариях?

+0

Understood. Я действительно комментирую вопрос, если что-то сработало. Я просто не могу найти ссылку «принять» или кнопку. Звучит слабо, но где это? Я вижу только: Поделиться: Редактировать: Удалить: Флаг: Скрыть: Справка – BRZ

+0

Посмотрите на первую строчку сообщения. Посмотрите налево. есть некоторые стрелки вниз и/или выделенная галочка. Нажмите на эти вещи. Если вы нажмете на что-то и хотите его отменить, снова нажмите на то же самое. – 7stud

ответ

3
$str =~ /Confidential Design (No\.?)?([A-Z0-9]{12})/; 

Срок будет равен 2 долларам США.

+0

Или просто '' my ($ term) = $ str = ~/Конфиденциальный дизайн (?: Нет \.?)? ([A-Z0-9] {12}) /; ''. – mzedeler

+0

@mzedeler: Спасибо. Это работает. – BRZ

3

насчет:

$str =~ /Design +(?:No\.? +)?([A-Za-z0-9]{12})/; 

чеках для Design, необязательно с последующим No или No., а затем 12 букв и цифр (я предполагаю, что ваш код-вещи буквенно-цифровой), все разделены одним или несколькими пробелами. Код будет в $1.

+0

Спасибо за ваш ответ. В скрипте я просто делаю $ myStr = $ 1, а затем печатаю $ str. Продолжает жаловаться на неинициализированное значение $ 1 в печати. Значение, $ 1 равно null, не так ли? – BRZ

+0

@simak Вы используете регулярное выражение * перед *, вы пытаетесь использовать '$ 1'? Переменные match ('$ 1' и friends) определяются только после того, как вы используете какое-либо регулярное выражение. – michaelb958

+0

Да - я использую $ 1 после использования регулярного выражения. Точный синтаксис: $ str ~ =/Design + (?: Нет \.? +)? ([A-Za-z0-9] {12}) /; $ myStr = $ 1; print $ myStr; – BRZ

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