正则表达式字符串替换

时间:2014-05-15 12:07:09

标签: regex notepad++

我正在使用VBA过滤MS Access数据库中的记录 我首先需要清理特定列中的数据

此列中的示例项目为XXXZZZSTYS1234NCYORGxxxASD

我想要做的是,如果字符串包含STY,则删除后续字符,直到您到达COYORGxxxNCYORGxxxCNYORGxxx,然后删除后面的任何字符ORGxxx如果存在

因此,在上面的示例中,它将被清除为XXXZZZSTYNCYORGxxx

它不一定是VBA,我用notepad ++来测试它

2 个答案:

答案 0 :(得分:1)

您可以尝试以下正则表达式:

(.*?STY).*?((COY|NCY|CNY)ORGxxx).*

并将其替换为:

$1$2

其中:

  • $ 1代表所有字符,直到第一个“STY”
  • $ 2代表COYORGxxx或NCYORGxxx或CNYORGxxx

答案 1 :(得分:1)

你去。

(.*STY).*((CO|NC|CN)YORGxxx).*
  • (。* STY)将捕获每个字符串直至STY

  • 。*会跳过字符直到下一次抓住

  • ((CO | NC | CN)YORGxxx)将捕获以CO,NC或CN开头的任何字符串,然后是YORGxxx

  • 和最后一个。*就在这里以确保匹配(在此特定示例中不需要)

然后你只需要用$ 1 $ 2替换,$ n代表正则表达式的第n个捕获。