正则表达式匹配Google Analytics中的25个IP地址

时间:2014-06-19 23:17:57

标签: regex google-analytics

我遇到了RegEx的问题。主要是我想创建一个过滤器,只在Google Analytics中找到这25个IP地址:

  • 216.54.215.0
  • 216.54.215.1
  • 216.54.215.2
  • ...
  • 216.54.215.24

我首先想到我可以使用:

216\.54\.215\.([0-9]|[1][0-9]|[2][0-4])

RegEx Test

但是正如你所看到的,它并没有捕捉到10-24的第二个数字。

然后我打开了显示空白,并注意到RegEx可能存在换行问题。因此,我尝试使用.[0-9]$之后仅选择一个数字:

216\.54\.215\.([0-9]$|[1][0-9]|[2][0-4])没有认出任何0-9,这很奇怪,因为我认为它会匹配一个数字[0-9]并在此之后结束,即$。假设这个我错了吗?

接下来,我打开显示空白,我看到每个IP地址都有换行符。我不知道为什么我决定尝试单词边界,但我决定将$换成\b。你知道什么,它有效。

216\.54\.215\.([0-9]\b|[1][0-9]|[2][0-4])

单词边界的定义是:匹配\w的字符与\w不匹配的字符(按任意顺序)之间的匹配,不消耗任何字符。

问题:

  1. 这是编写RegEx的最佳方式吗?
  2. 为什么$在我的第二个例子中不起作用?
  3. 为什么\b有效?

3 个答案:

答案 0 :(得分:2)

216\.54\.215\.([0-9]|[1][0-9]|[2][0-4])+

最后添加的+表示

  

匹配前一个元素一次或多次。 e.g。

     

模式:"是+"   匹配:" bee" in" be"," be"在"弯曲"

你可以更好地去寻找

216\.54\.215\.([0-9]|[1][0-9]|[2][0-4]){1,3}

然后你只会在最后选择3位数字,如果错误输入第4位数字,它就消除了错误的可能性。 (在你的情况下可能有用也可能没用)

  

通常{ n , m }与前一个元素匹配至少n次,   但不超过m次。

     

模式" \ d {3,5}" 匹配" 166"," 17668" &安培; " 19302"在" 193024"

这将是你的结果。 Results

因此,您的案例的确切解决方案是使用

216\.54\.215\.([0-9]\b|[1][0-9]|[2][0-4]){1,2}\b

这意味着你只希望最后两位数限制为24位,然后边界完成,然后Regex不会从216.54.215.24中选择216.54.215.2411

this是最终结果。

当我使用正则表达式时,我始终将this页面作为参考。

答案 1 :(得分:0)

这是你需要的正则表达式: ^216\.54\.215\.([0-9]|1[0-9]|2[0-4])$

答案 2 :(得分:0)

应该有效的正则表达式是:

^216\.54\.215\.(1?[0-9]|2[0-4])$

地址0-9由1?[0-9]覆盖,其中1?不匹配任何内容。

地址10-19由1?[0-9]覆盖,其中1?与十位数匹配。

地址20-24由2[0-4]覆盖。