我遇到了 RegEx 的问题。主要是我想创建一个过滤器,只在 Google Analytics 中找到这 25 个 IP 地址:
我首先认为我可以使用:
216\.54\.215\.([0-9]|[1][0-9]|[2][0-4])
RegEx Test
但正如您所看到的,它没有捕获 10-24 的第二个数字。
然后我打开了显示空白,并注意到正则表达式可能存在换行问题。所以我试图在最后一个
. 之后只选择一个数字通过使用
[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 不匹配的字符(按任意顺序)。
问题:
$ 不在我的第二个例子中工作? \b工作? 请您参考如下方法:
216\.54\.215\.([0-9]|[1][0-9]|[2][0-4])+
添加的
+最后意味着
Matches the previous element one or more times. e.g.
Pattern: "be+" Matches: "bee" in "been", "be" in "bent"
甚至更好,你可以去
216\.54\.215\.([0-9]|[1][0-9]|[2][0-4]){1,3}
那么您最后只会选择 3 位数字,如果第 4 位数字输入错误,则消除了错误的可能性。 (在你的情况下可能有用也可能没用)
In general
{ n , m }matches the previous element at least n times, but no more than m times.Pattern "\d{3,5}" Matches "166", "17668" & "19302" in "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当我使用正则表达式时,页面打开作为引用。


