没有特殊字符的正则表达式结果(排除一些字符)

标签 regex

假设我们要从文件中提取以 1 开头并以 aa>>> 结尾的所有字符串。

所以我们将使用这个正则表达式:

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

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

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

有什么方法可以从结果中排除 aa>>> 吗?

对于上面的示例,我想要 123.123.bmp 作为结果。

最佳答案

您可以使用

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

请参阅regex demo

详细信息

  • 1 -1字符
  • .*? - 任意 0 个以上字符,尽可能少
  • (?=\s*a{2}>>>$) - 正向 lokahead(非消耗模式,不会将匹配的文本添加到整个匹配(组 0)值),需要(紧邻当前位置的右侧):
    • \s* - 0+ 空格
    • a{2} - 两个a s
    • >>>$ ->>>在字符串的末尾。

仅当 1 时才匹配前面没有其他数字,请使用 (?<!\d)向后看:

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

或单词边界:

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

关于没有特殊字符的正则表达式结果(排除一些字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56068436/

相关文章:

javascript - 将脏话过滤器添加到简单的 Socket.IO 应用程序

c# - 正则表达式:C# 提取双引号内的文本

regex - 将 PCRE 模式转换为 POSIX

r - 查找以 alpha 开头的字符串,但多个特定字符除外

java - 从 tcpflow 输出格式化 IP?

Python 正则表达式与换行符匹配

regex - 使用 sublime text 2 在每一行添加逗号

python - 为什么我的代码停止了?

python - re.findall 的问题(重复)

php - PHP中preg_replace()的字符串的最大长度?