2017-07-25 34 views
0

前面的空格我這裏有這個片段正則表達式匹配首先從性格

agent=Mozilla/5.0 (Windows NT 6.0; WOW64; Trident/6.0; rv:11.0) like Gecko custom1=custom1 custom2=custom2 more=otherstuffi dont care about etc 

我要的是一個匹配了這裏正則表達式

agent=Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko 

我已經試過這樣:

agent=(.*?=) 

哪給了我:

agent=Mozilla/5.0 (Windows NT 6.0; WOW64; Trident/6.0; rv:11.0) like Gecko custom1= 

但是custom1可能會有更少或更多的字符有時候..所以我不希望它是特定的我想在Gecko和自定義之間的空間之前獲取所有內容但是如果瀏覽器/不是壁虎。所以我覺得最好的方法是使用next =(在custom1之後),因爲它總是在那裏。

因此,如果我能夠從代理那裏得到custom1 =,然後只匹配custom1之前的空間之前的什麼,那就行了。

還是我過度複雜呢?

謝謝。

回答

1

我建議如下:除了=

agent=([^=]*)(?=\s) 

這將匹配儘可能多的字符就可以了,但它最終的空間之前停止。

測試它live on regex101.com

+0

完美。效果很好。謝謝! –

1

你可以使用這個表達式:

agent=(.+?)\s+[^=\s]+= 

,讓你在拍攝組#1

RegEx Demo

正則表達式破碎匹配的文本:

  • agent=:比賽文字agent=
  • (.+?):匹配1個或多個字符(懶惰)
  • \s+:匹配1+空格
  • [^=\s]+=:匹配1+非空白,非=字符後跟=
+0

啊涼快!這也是很好的知道該怎麼做。 –