正则表达式匹配角色的第一个PRECEDING空间

时间:2017-07-25 20:47:47

标签: regex

我在这里有这个片段

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之前的空格之前的内容,则可以正常工作。

还是我让这个过于复杂?

感谢。

2 个答案:

答案 0 :(得分:1)

我建议如下:

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

除了=之外,它将匹配尽可能多的字符,但它会在最终空格之前停止。

测试live on regex101.com

答案 1 :(得分:1)

您可以使用此正则表达式:

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

并在捕获的组#1中找到匹配的文本

RegEx Demo

RegEx分手:

  • agent=:匹配文字agent=
  • (.+?):匹配1个或多个字符(懒惰)
  • \s+:匹配1+空格
  • [^=\s]+=:匹配1个非空格,非=字符后跟=