过滤不必要结果的base64正则表达式

时间:2019-05-01 21:11:43

标签: r regex base64

从正则表达式中过滤掉不需要的匹配项

我正在R中提取base64编码字符串,并且正在使用以下正则表达式:

\b[A-Za-z0-9+/]\b

99%的时间都可以,但是当我遇到这种情况(或类似情况)时:

itisyourpersonalenergyspecialistitisyourpersonalenergyspecialist

我的单词折叠了,我得到了匹配。我的数据很乱,就像这样。

有什么办法可以过滤掉它们,从而修改我的原始正则表达式。

这个问题可能很明显,但是我对正则表达式还是比较陌生。

1 个答案:

答案 0 :(得分:0)

  

您可以考虑为以下表达式设计几个边界   您可能拥有并出现的概率为1%。

This RegEx可能会帮助您设计这样的表达式,只需添加一些边界即可,例如:

  • 应该使用(?=)来确定某些字符,然后使用出现次数{n,}(即使这不是最佳边界,它可能会帮助您设计一个字符,但我并不是真的)确定base64)

  • 您还可以在\b( )\b周围添加一个长度边界,以使其与百分比概率较低的示例字符串不匹配。

您可以看到类似这样的字符串的概率:

 itisyourpersonalenergyspecialistitisyourpersonalenergyspecialist

成为base64字符串几乎是0。即使您有一些接近base64格式的随机字符串(也许与我强调的字符串类似),仍然可以通过一个好的表达式将其排除。

如果愿意,您可以添加许多类型的边界以达到几乎100%的精度。这不是一个好的表达,但它可能会给您大致的看法:

(?=.+[A-Z]{2,})(?=.+[a-z]{2,})(?=.+[0-9]{2,})([A-Za-z0-9+\/]{100,}) 

此表达式仅表示字符串输入:

  • 彼此之间必须至少有两个[A-Z]字符。
  • 彼此之间必须至少包含两个[a-z]字符。
  • 彼此之间必须至少包含两个[0-9]个字符(我对此非常确定)。
  • 应至少具有100个base64字符长度。

enter image description here

您可能会认为我添加的那些量词,例如{2,}{100,},只是为了表明您可以排除问题中的字符串。您很可能会为此匹配设计出许多更好的表达式,希望它们能达到100%的准确性。


其他演示:

This RegEx可能会帮助您了解量词的工作原理:

 ([A-Za-z0-9+\/]{100,})

enter image description here

  

总体而言,您当然可以这样做。