在多个模式正则表达式

时间:2017-03-31 12:22:09

标签: regex

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

并使用空字符串替换。

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

RegEx Demo