2016-02-11 57 views
1

編輯:澄清,我是用崇高的文本。看來問題實際上是多行問題。謝謝大家的反饋!用正則表達式環視問題,即新的生產線包括

好了,所以我試圖分析類似這樣的文本塊:

Private Sub NAV_VE124_Click() 
    'Open the picture in its description field 
    Call ShowPic(Me.NAV_VE124.Description) 
End Sub 

和正則表達式模式(?<=Private Sub)((.*?)(?=_Click))

似乎工作定位NAV_VE124

,但由於某種原因(?<=\')((.*?)(?=End))

不會產生任何結果...

任何想法將不勝感激。

而且,我想這兩個搜索,這樣我只搶東西,如果被允許的其他條件「結合後,等該怎麼做任何的想法也將是驚人的:)

+1

你對多標誌? – ndn

+1

['^ Private Sub(。+?)(?= _ Click)。* \ R \ s +'(?s)(。+?)(?= End)(?s-)'](https:// regex101 .com/r/bH5qV7/1) – Jan

回答

1
(?<=\')((.|\s)*(?=End)) 

問題是多行...不知道你使用什麼樣的正則表達式工具,但只是做一個(。| \ s)*來匹配包括換行符在內的任何東西。如果\ s不起作用,請找出與您的工具的換行符匹配的內容。

+0

使量詞懶,否則:https://regex101.com/r/bH5qV7/2 – Jan

+0

這似乎在regex101.com模擬器中工作,但不在Sublime中。感謝您的提示:) – itchyspacesuit

+0

不要使用'(。| \ s)',它非常低效,因爲這個[demo](https://regex101.com/r/bH5qV7/3)顯示。 (它會失敗,但它會超時 - 而切換到懶惰量詞並沒有幫助。)大多數風味/工具都支持單線/ DOTALL模式,讓點與換行匹配,而崇高文本就是其中之一。 –

0

如果您正則表達式引擎支持它,你能想出:

^Private Sub(.+?)(?=_Click).*\R\s+'(?s)(.+?)(?=End)(?s-) 

與崇高測試爲好。

+0

嗯..我得到一個錯誤,「十六進制轉義序列無效」 – itchyspacesuit