2014-03-12 94 views
1

是否有使用正則表達式表示下面的代碼位的較短的方式 -正則表達式來表示多行

survey=fa3773ea26e64b7c8715fba9785b2486&plan=010">Survey X</a>\r\n 
\t\t\t\t\t\t\t\t\t\r\n 
\t\t\t\t\t\t\t\t\t\r\n 
\t\t\t\t\t\t\t\t\r\n 
\t\t\t\t\t\t\t</td>\r\n 
\t\t\t\t\t\t\t<td nowrap>&nbsp;READY FOR SUBMISSION 

我已經試過

survey=(.*?)&plan(.*?)\n(.*?)\n(.*?)\n(.*?)\n(.*?)\n(.*?);READY FOR SUBMISSION 

雖然這工作,我想縮短表達式或使其更具動態性,以使其捕獲任意數量的換行符。

這裏的大圖是在這個模式的網頁上搜索並使用第一個捕獲組捕獲「準備提交」調查ID。我在使用C代碼的地方使用LoadRunner工具。

謝謝。

編者注:dot-matches-all不是一個選項。

回答

1

這個怎麼樣?

survey=([a-z\d]+)&plan(?:.|[\t\r\n])*?READY FOR SUBMISSION 

Regular expression visualization

Debuggex Demo

+0

謝謝您的答覆。我的點匹配在換行符處打斷。因此我不得不放入\ n的多個實例。我在帖子中添加了語言和工具信息。感謝您的建議。 – mrigs13

+0

你沒有選擇使用點匹配所有?大多數正則表達式都支持這個選項,但我不熟悉C.點匹配 - 所有這些都意味着點也可以用來匹配新行。 – aliteralmind

+0

不幸的是,這不是我的選擇。我已經測試了好幾次,並看到了在新行中打破的代碼。 – mrigs13