2013-06-30 40 views
-4

我有一個字符串:發現相鄰兩項

Str1 = "Confidential Design No. PXB1235GHYZ9" 

此字符串也可能發生在以下變化:

Str2 = "Confidential Design No PXB1235GHYZ9" 

( 「」 通知沒有下到NO)或

Str3 = "Confidential Design PXB1235GHYZ9" 

鑑於關鍵字設計,我需要提取PXB1235GHYZ9。這個詞總是12個字符,並且始終是阿爾法和數字的混合物。

如何使用RegEx/Perl編寫通用腳本來處理所有3種情況?我應該使用空格分割它們,然後檢查每個術語嗎?或者,在所有3種情況下,有沒有一種更簡單的方法可以將Design給出「PXB1235GHYZ9」?

+0

理解。我實際上回復了問題是否有用。我找不到「接受」鏈接或按鈕。聽起來很蹩腳 - 但它在哪裏?我只看到:分享:編輯:刪除:標記:隱藏:幫助 – BRZ

+0

看看帖子的第一行。一路向左看。有一些上下箭頭和/或一個勾畫的複選標記。點擊這些東西。如果您點擊某個內容並想撤消它,請再次單擊相同的內容。 – 7stud

回答

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

期限將是2美元。

+0

或者只是我的($ term)= $ str =〜/ Confidential Design(?:No \。?)?([A-Z0-9] {12})/;''。 – mzedeler

+0

@mzedeler:謝謝。這工作。 – BRZ

3

什麼:

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

檢查爲Design,任選隨後NoNo.,隨後的12個字母數字(我假設你的代碼的東西是字母數字),全部由一個或多個空格分隔。該代碼將在$1結束。

+0

謝謝你的迴應。在腳本中,我只是做$ myStr = $ 1,然後打印$ str。不停地抱怨未初始化的價值$ 1的印刷品。意思是,$ 1是空的,不是嗎? – BRZ

+0

@simak在你嘗試使用'$ 1'之前你使用了正則表達式嗎?匹配變量('$ 1'和朋友)只在使用某個正則表達式之後定義。 – michaelb958

+0

是的 - 我使用正則表達式後使用$ 1。精確的語法是:$ str〜=/Design +(?: No \。?+)?([A-Za-z0-9] {12})/; $ myStr = $ 1;打印$ myStr; – BRZ