正则表达式忽略如果存在并继续

时间:2015-04-01 02:11:07

标签: php regex

我正在使用带有php的正则表达式 在这两个例子中,我将匹配TO MATCH

示例1:

Nom: Mr TO MATCH 

示例2:

Nom: Mme TO MATCH 

示例3:

Nom: TO MATCH 

我正在使用正则表达式:

/Nom:\s+(?:Mr|Mme)\s+(.*)/ui

它仅适用于示例1和2,但不适用于第3个

如果告诉正则表达式忽略Mr或Mme,如果存在并继续?

祝你好运

1 个答案:

答案 0 :(得分:2)

您需要使您的非捕获组可选;在令牌+之后将*更改为\s

Nom:\s+(?:Mr|Mme)?\s*(.*)

或者您可以排除第二个\s并在返回的匹配结果上执行trim()

Nom:\s+(?:Mr|Mme)?(.*)