我正在使用带有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,如果存在并继续?
祝你好运
答案 0 :(得分:2)
您需要使您的非捕获组可选;在令牌+
之后将*
更改为\s
。
Nom:\s+(?:Mr|Mme)?\s*(.*)
或者您可以排除第二个\s
并在返回的匹配结果上执行trim()
。
Nom:\s+(?:Mr|Mme)?(.*)