Регулярное выражение для соответствия последнему элементу без разделителя - PullRequest
1 голос
/ 16 марта 2010

У меня есть ряд таких имен: "Дж. Смит; Б. Джонс; О. Генри" Я могу сопоставить все, кроме фамилии, с

\w+.*?;

Существует ли регулярное выражение, которое будет соответствовать всем именам, включая последнее?

Ответы [ 3 ]

5 голосов
/ 16 марта 2010

Это здесь:

\w+.*?(?:;|$)
4 голосов
/ 16 марта 2010

не нужно использовать регулярное выражение. кажется, что между вашими именами у вас есть ";" в качестве разделителя, так что используйте это, чтобы разделить строку. например, Python

>>> mystring = "J. Smith; B. Jones; O. Henry"
>>> mystring.split(";")
['J. Smith', ' B. Jones', ' O. Henry']
2 голосов
/ 16 марта 2010

Это достаточно просто, если вы хотите регулярное выражение:

\w[^;]+

Пример Perl:

@names = "J. Smith; B. Jones; O. Henry" =~ /\w[^;]+/g;
# ("J. Smith","B. Jones","O. Henry")

Или, если вы хотите разделить, я бы использовал \s*;\s* (\s* для удаления пробелов):

@names = split /\s*;\s*/, "J. Smith; B. Jones; O. Henry";
# ("J. Smith","B. Jones","O. Henry")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...