2015-01-26 13 views
0

Я должен разобрать несогласованности строки и эти форматы строк:Regular проблема Expression с определенной строкой

1SURNAME/NAMEMR (The last two or three chars are MR/MRS/MS/DR) 
1SURNAME/NAME MR 
or 
1SURNAME/NAME 

мне нужно, чтобы поймать эту последовательность с помощью регулярных выражений, и я построил эти один: 1[A-Z]*\/[A-Z]*[\s]?[[MRS|MR|MS|DR]+

но для этого имени он работает только для:

1SMITH/GEORGEMR 
1SMITH/GEORGE MR 

но не для 1SMITH/GEORGE

Кто знает, что здесь не так?

ответ

1

Поместите последнюю часть в группу, не связанную с захватом, и сделайте ее необязательной, добавив квант ? рядом с этой группой.

\b1[A-Z]*\/[A-Z]*\s?(?:MRS|MR|MS|DR)?\b 

DEMO

+0

По какой-то странной причине я снова получать 1SMITH/GEOR! – BlackM

+0

yep, вы также хотите, чтобы имена, которые не имеют MR или MRS в конце. Если вы хотите совместить строки с MR, MRS, то используйте '1 [A-Z] * \/[A-Z] * \ s? (?: MRS | MR | MS | DR])' –

+0

Да, я это знаю! Дело в том, что RegEx сокращает последние 2 символа «george» – BlackM