2016-11-14 34 views
0

比如我有一個文本:如何提高我的RegEx以獲取模式之前的文本?

Hello, my name is %{John}. 

現在,我要採取一切文字%{John}之前。對於這個我使用正則表達式旁邊:

.+?(?=(?<=%{)[^%]*(?=})) 

它的工作原理,但它包含%{這部分了。我不需要這樣。我如何獲取全文,但排除%{

+0

爲什麼不能['s.split(「%{」).first'](http://ideone.com/OrwRvf)? –

+0

爲什麼不's.split('%')。first'。不需要'{'。 –

回答

1

試試這個:

/.+(?=\%\{.*\})/ 

看到http://www.rubular.com/r/YHcuSxMIA8

+0

謝謝!我會很快接受你的回答! –

+0

這將返回'你好,我的%{名字}是''你好,我的%{姓名}是%{John} .'輸入。請參閱http://ideone.com/R2Hmm4。 –

+0

@ J.Doe剛剛做了一個小小的更新,看看。而且不急於接受答案(但在某些時候肯定會選擇一個答案)。另一個更好的答案可能就在眼前。 –

0

正則表達式應儘量簡單,以完成任務。當你增加複雜性時,你會增加它意外中斷的可能性。

這裏就是我開始:

'Hello, my name is %{John}.'[/^(.+)%/, 1] # => "Hello, my name is " 

所有這一切確實是指定開始在該行的開始和捕捉一切達%。沒有別的應該是必要的。

相關問題