【问题标题】:Remove everything after multiple patterns regex删除多个模式正则表达式后的所有内容
【发布时间】:2017-03-31 12:22:08
【问题描述】:

我正在尝试用三种不同的模式删除字符串的结尾

字符串示例(这不是一个块,这是三个独立的字符串):

BP342
Rue Du Docteur Ichon BP 60 Site de BRESSUIRE
CESEL - Hôtel Dieu 34 Rue du Dr Maunoury - B.P. 30407

我编写了这个正则表达式模式来检测BP 的每种情况,我可以得到:

[B][P]|[[:space:]][B][P]|[-][[:space:]][B][.][P][.]

但现在我想删除遵循每种模式之一的所有内容。我试图将.$ 放在每个模式的末尾,但是当我这样做时,它不再识别以前的模式。那么如何在匹配模式后删除字符串的结尾呢?

预期结果:

(nothing)
Rue Du Docteur Ichon
CESEL - Hôtel Dieu 34 Rue du Dr Maunoury

我在这个网站上做这些例子:https://regex101.com/r/QXYtyv/3

【问题讨论】:

  • 不清楚您要做什么。您的演示与这篇文章无关。
  • 顺便说一句,正在尝试删除 上的 firstlast BP / B.P. 之后的所有内容 或 字符串?
  • @anubhava 什么不清楚和不相关?我正在尝试删除BPthings 之后的所有内容。我将发布一个更易于理解的预期结果
  • @anubhava 哦,对不起,我没有给出好的链接,但我给出了正确的模式,你可以复制粘贴。
  • @anubhava 我明白了,确实很有用。

标签: regex


【解决方案1】:

您可以使用此正则表达式进行匹配:

(?:\s*-)?\s*B\.?P\.?.*$

并使用空字符串替换。

这个正则表达式匹配一个可选的连字符,后跟BP,两个字母前面都有可选的点。使用 .*$ 它匹配所有内容,直到行尾。

RegEx Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2017-08-29
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多