没有特殊字符的正则表达式结果(不包括某些字符)

时间:2019-05-09 22:34:20

标签: regex

想象一下,我们要从文件中提取所有以1开头并以aa>>>结尾的字符串。

因此我们将使用此正则表达式:

1(.*)+a{2}>>>$

此正则表达式将返回包含aa>>>的所有值

例如,在32 123.123.bmp aa>>>上测试正则表达式,它将返回123.123.bmp aaa>>>

是否可以从结果中排除aa>>>

对于上述示例,我希望将123.123.bmp作为结果。

1 个答案:

答案 0 :(得分:2)

您可以使用

1.*?(?=\s*a{2}>>>$)

请参见regex demo

详细信息

  • 1-1字符
  • .*?-任意0个以上的字符,尽可能少
  • (?=\s*a{2}>>>$)-一个正数lokahead(一种非消耗性模式,不会将匹配的文本添加到整个匹配项(第0组)值中),它需要(立即位于当前位置的右侧):
    • \s*-超过0个空格
    • a{2}-两个a
    • >>>$->>>放在字符串的末尾。

要仅在1后面没有其他数字时进行匹配,请在后面使用(?<!\d)

(?<!\d)1.*?(?=\s*a{2}>>>$)

或单词边界:

\b1.*?(?=\s*a{2}>>>$)