我的正則表達式匹配太多了。我怎么讓它停下來?J0000000: Transaction A0001401 started on 8/22/2008 9:49:29 AM
J0000010: Project name: E:\foo.pf
J0000011: Job name: MBiek Direct Mail TestJ0000020: Document 1 - Completed successfully我有這個巨大的丑陋的字符串,我正在嘗試使用正則表達式從中提取片段。在這種情況下,我想抓住“項目名稱”之后的所有內容,直到它說“J0000011:”的部分(每次11將是一個不同的數字)。這是我一直在玩的正則表達式Project name:\s+(.*)\s+J[0-9]{7}:問題是它不會停止,直到它碰到J0000020:最后。如何在第一次出現J [0-9] {7}時使正則表達式停止?
5 回答

FFIVE
TA貢獻1797條經驗 獲得超6個贊
在這里使用非貪婪量詞可能是最好的解決方案,也因為它比貪婪的替代方案更有效:貪婪的匹配通常盡可能地(在這里,直到文本的結尾?。┤缓笞匪葑址竺娴淖址麌L試匹配之后的部分。
但是,請考慮使用否定字符類:
Project name:\s+(\S*)\s+J[0-9]{7}:
\S
意思是“除了空白之外的所有東西,這正是你想要的。

神不在的星期二
TA貢獻1963條經驗 獲得超6個贊
我還建議你使用“Expresso”試驗正則表達式 - 它是一個實用程序,是一個很好的(和免費的)實用程序,用于正則表達式編輯和測試。
它的一個優點是它的UI暴露了很多正則表達式功能,人們不熟悉正則表達式可能并不熟悉,因為它們很容易學習這些新概念。
例如,在使用UI構建正則表達式并選擇“*”時,您可以選中“盡可能少”復選框并查看生成的正則表達式,并測試其行為,即使您不熟悉之前的非貪婪表達。
可在其網站下載:http: //www.ultrapico.com/Expresso.htm
快遞下載:http: //www.ultrapico.com/ExpressoDownload.htm
- 5 回答
- 0 關注
- 1230 瀏覽
添加回答
舉報
0/150
提交
取消