Регулярное выражение в C# для Фамилии, которая включает внутреннее пространство

попробуйте это

TEMP=$(mktemp)                  # create unique tempfile
while read line; do             # read one line from inputfile
    # do what you want, e.g
    echo "($line)" >> $TEMP     # only an example
done < inputfile                # use inputfile in while-loop
cat $TEMP                       
rm $TEMP                        # remove tempfile
5
задан Chad Birch 3 April 2009 в 22:25
поделиться

6 ответов

На имя "Ṣalāḥ ad-Dīn Yūsuf ibn Ayyūb" (см. http://en.wikipedia.org/wiki/Saladdin), который является именем, и который является последним? Что относительно на имя "(изобретен) Roberto Garcia y Vega"? "Chiang Kai-shek" (см. http://en.wikipedia.org/wiki/Chang_Kai-shek)?

Пробелы на имена являются наименьшим количеством Ваших проблем! Посмотрите Имена в глобальном приложении: Что сохранить.

3
ответ дан 13 December 2019 в 22:17
поделиться
^\p{L}+(\s+\p{L}+)*$

Этот regex имеет следующие функции:

  • Будет соответствовать одной фамилии буквы (например, фамилии Malcolm X's)
  • Не будет соответствовать фамилиям, содержащим числа (как что-либо с a \w или a [^ ] будет),
  • Соответствия unicode буквы

Но что относительно фамилий как "O'Connor" или написанных через дефис фамилий... хм...

5
ответ дан 13 December 2019 в 22:17
поделиться

? спецификатор является Вашим другом. Делает самое короткое возможное соответствие вместо жадного. Используйте его для имени, как в:

^(.+?) (.+)$

Группа 1 захватывает все до первого пространства, группа 2 получает остальных.

Конечно, теперь что Вы делаете, если имя содержит пробелы?

0
ответ дан 13 December 2019 в 22:17
поделиться

Это должно сделать задание:

^[a-zA-Z][a-zA-Z ]*[a-zA-Z]$

Править: Вот небольшое улучшение, которое позволяет последние за одно имена и дефисы/апострофы на имя:

^[a-zA-Z'][a-zA-Z'- ]*[a-zA-Z']?$
3
ответ дан 13 December 2019 в 22:17
поделиться

Я думаю, что это больше, что Вы искали:

^[^ ][a-zA-Z ]+[^ ]$

Это должно соответствовать началу строки без пространства, альфа-символов или пространства и никакого пространства в конце.

Это работает в irb, но в прошлый раз я работал с C#, я использовал подобный regexes:

(нуль хорош, нулевые отказавшие средства),

>> "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
-1
ответ дан 13 December 2019 в 22:17
поделиться

Попробуйте что-то вроде этого:

^[^\s][\w\s]*[^\s]$
0
ответ дан 13 December 2019 в 22:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: