Я хотел бы Регулярное выражение для C#, которое соответствует «Johnson», «Del Sol» или «Del La Range»; другими словами, он должен соответствовать словам с пробелами в середине, но без пробела в начале или в конце.Регулярное выражение в C# для фамилии, которое включает внутреннее пространство
ответ
The? квалификатор - ваш друг. Делает кратчайший возможный матч вместо жадного. Используйте его для первого имени, как в:
^(.+?) (.+)$
Группа 1 захватывает все до первого места, группа 2 получает все остальное.
Конечно, теперь что вы будете делать, если first имя содержит пробелы?
Приятный и простой, но я думаю, что он будет соответствовать «238 39592», а это не слова. –
затем замените "." с «\ w» или «[a-zA-Z]» – Rich
Не уверен, что OP хочет совместить фамилию самостоятельно или внутри строки, содержащей как имя, так и фамилию ... Я предполагал, что первое, а вы похоже, сделали последнее. Тем не менее, кажется, что ваше регулярное выражение позволяет пробелы в начале или в конце, которые необходимо исправить. – Noldorin
Попробуйте что-то вроде этого:
^[^\s][\w\s]*[^\s]$
Я не думаю, что фамилии могут содержать цифры ... –
Это должно сделать работу:
^[a-zA-Z][a-zA-Z ]*[a-zA-Z]$
Edit: Вот небольшое усовершенствование, которое позволяет один-ПОСЛЕДНИХ имена и дефис/апостроф в имени :
^[a-zA-Z'][a-zA-Z'- ]*[a-zA-Z']?$
Malcolm X не был бы рад этому ... (требуется минимум 2 буквы, которые есть ...) –
Самое короткое РЕАЛЬНОЕ имя, о котором я могу думать, это "Ng." Все должно быть в порядке. ;) –
Ненулевое число людей имеет «настоящую» фамилию «U» ... –
^\p{L}+(\s+\p{L}+)*$
Это регулярное выражение имеет следующие особенности:
- будет соответствовать фамилии одну букву (например, фамилия Малкольма Х)
- не будет соответствовать фамилии, содержащие числа (например, что-нибудь с
\w
или[^ ]
будет) - Матчей Юникода буквы
Но что о фамилиях, как «Коннор» или дефис фамилии ... хмм ...
Я думаю, что это больше, чем вы искали:
^[^ ][a-zA-Z ]+[^ ]$
Это ШОУ ld соответствует началу строки без пробела, альфа-символов или пробела, а в конце нет места.
Это работает в IRB, но последний раз, когда я работал с C#, я использовал подобные регулярные выражения:
(ноль хорошо, ноль означает не удалось)
>> "Di Giorno" =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> 0
>> "DiGiorno" =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> 0
>> " DiGiorno" =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> nil
>> "DiGiorno " =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> nil
>> "Di Gior no" =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> 0
Использование [^] будет соответствовать именам, начинающимся или заканчивающимся цифрами, пунктуацией и т. Д. –
Дэнни прав. Я ответил тем же самым решением и отступил, когда понял это. –
Во имя «Салах ад -Dīn Yūsuf ibn Ayyūb "(см. http://en.wikipedia.org/wiki/Saladdin), который является первым именем и является последним? Как насчет имени «Роберто Гарсия и Вега» (придумано)? «Чан Кай-ши» (см. http://en.wikipedia.org/wiki/Chang_Kai-shek)?
Пространства в именах - это наименее важные проблемы! См. Personal names in a global application: What to store.
Согласен. Независимо от того, насколько сильно вы пытаетесь, вы всегда найдете имена, которые не соответствуют правильно. Я имею в виду, если у вас нет полного контроля над тем, какие имена вы разбираете. –
Вот лучше один:
/^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/
Позволяет стандартные знаки препинания и пробелы, но не может начинаться с пунктуацией.
- 1. Регулярное выражение для фамилии
- 2. регулярное выражение не включает в себя пространство
- 3. Уникальное регулярное выражение для имени и фамилии
- 4. нужно регулярное выражение для поиска подходящей фамилии
- 5. Регулярное выражение - пустое пространство
- 6. Регулярное выражение, которое исключает некоторые
- 7. Регулярное выражение для C#
- 8. Которое регулярное выражение быстрее
- 9. Регулярное выражение для имени и фамилии в одном поле
- 10. Регулярное выражение для получения нефрита включает
- 11. Регулярное выражение, которое допускает пространство только между именем?
- 12. Регулярное выражение, которое нельзя использовать
- 13. C# регулярное выражение
- 14. Регулярное выражение Javascript вставка пространство
- 15. регулярное выражение слово граничное пространство
- 16. Регулярное выражение, которое использует условное выражение «ИЛИ»
- 17. Регулярное выражение PostgreSQL удалить пространство
- 18. регулярное выражение python, которое повторяется
- 19. Регулярное выражение для URI, которое заканчивается цифрой
- 20. Регулярное выражение включает и исключает специальные символы
- 21. Регулярное выражение, которое соответствует последовательности
- 22. Регулярное выражение, которое распознает /*...*/ note
- 23. C# Регулярное выражение для строки сопоставления
- 24. Регулярное выражение в C/C++
- 25. Регулярное выражение в C
- 26. Регулярное выражение для положительных чисел в C#
- 27. Регулярное выражение, которое работает в `find`
- 28. Как создать регулярное выражение для проверки выражения пользователя, которое включает в себя некоторые команды?
- 29. регулярное выражение, которое с отрицательным взглядом вперед
- 30. Регулярное выражение для извлечения классического ASP включает имена файлов
Как выглядит строка ввода? Является ли последнее имя единственной частью строки, или это предложение или, возможно, полное имя с необязательным количеством пробелов? Я думаю, что здесь здесь важно. – Rich