【问题标题】:regex masking patterns [closed]正则表达式屏蔽模式
【发布时间】:2016-06-14 12:00:05
【问题描述】:

我有这些输入:

DFDBDFDFDF21R123
DFDBDFDFDF34R123

我想匹配这些输入,除了位置 9 和 10,如下所示:

DFDBDFDFxxR123
DFDBDFDFxxR123

所以,要明确一点:匹配 1-8,排除 9-10,匹配 11-16。

【问题讨论】:

标签: regex


【解决方案1】:

扩展来自https://stackoverflow.com/users/557597/sln的答案

(.{8})..(.+)

您对正则表达式的理解中缺少的“东西”是“分组”

(SOME MATCHING SUB-STRING A)(SOME MATCHING SUB-STRING B)

如果你像这样使用正则表达式,你可以做很多好事,包括“拉出”一行的一部分,然后重新排列它们。但它也可以帮助您对要搜索的“部分”进行分组。

他的

.{8}

匹配 '.'这是“任何单个字符”,然后 {8} 表示“匹配任何单个字符 8 次。

 (.{8})

表示“将前 8 个字符分组”以供使用。

..

表示“匹配任意两个字符”

 .+ 

表示“匹配 1 个或多个“任意字符”

 (.+)

表示“将 1 个或多个‘任何字符’分组以供以后使用”

所以……

当你把它们放在一起时,你会得到

 (.{8})..(.+)

这意味着“匹配前 8 个字符(任意 8 个字符)作为组 1”,然后是“任意两个字符”,然后是“1 个或多个字符作为组 2”

这将允许您(取决于您的正则表达式客户端/等)使用 $1 和 $2 来打印、使用或...无论如何...组 1 和/或组 2 的值。

希望这会有所帮助。

【讨论】:

  • 我看不出分组与用户的问题有什么关系。他希望在忽略某些字符的同时匹配某些字符串。这可以通过. 来实现。无需涉及任何其他正则表达式功能。
  • '正是他所需要的,但在 smart 时仍然使用组(即使您以后不使用它们)可以帮助提高正则表达式的清晰度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
  • 2017-08-17
  • 2019-04-09
  • 2014-08-27
相关资源
最近更新 更多