从正则表达式中过滤掉不需要的匹配项
我正在R中提取base64编码字符串,并且正在使用以下正则表达式:
\b[A-Za-z0-9+/]\b
99%的时间都可以,但是当我遇到这种情况(或类似情况)时:
itisyourpersonalenergyspecialistitisyourpersonalenergyspecialist
我的单词折叠了,我得到了匹配。我的数据很乱,就像这样。
有什么办法可以过滤掉它们,从而修改我的原始正则表达式。
这个问题可能很明显,但是我对正则表达式还是比较陌生。
答案 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,})
此表达式仅表示字符串输入:
您可能会认为我添加的那些量词,例如{2,}
和{100,}
,只是为了表明您可以排除问题中的字符串。您很可能会为此匹配设计出许多更好的表达式,希望它们能达到100%的准确性。
This RegEx可能会帮助您了解量词的工作原理:
([A-Za-z0-9+\/]{100,})
总体而言,您当然可以这样做。