Регулярное выражение для получения последнего двоеточия в строке и всего после него - PullRequest
2 голосов
/ 27 мая 2009

Я пытаюсь написать регулярное выражение, которое получит последний ':' и все после него. Это мое регулярное выражение в C #:

Regex rx5 = new Regex(@"[A-Za-z.][^\s][^:]{1,}$",RegexOptions.Singleline); 

это работает, за исключением того, что там есть ':'. Как мне получить все после ':', не считая ':'?

Ответы [ 6 ]

11 голосов
/ 27 мая 2009

Не используя регулярное выражение, но String.LastIndexOf и Substring ()

2 голосов
/ 27 мая 2009

Вам лучше использовать str.Substring (str.LastIndexOf (':') + 1).

Регулярные выражения эффективны, но не пытайтесь использовать их, когда есть более простой подход.

2 голосов
/ 27 мая 2009

Я бы использовал это регулярное выражение:

^(?:[^:]*:)+([^:]*)$

Первая группа совпадений будет содержать остаток после последнего :.

1 голос
/ 27 мая 2009

Используйте вид сзади, чтобы не включить последний ":"

 Regex rx5 = new Regex("(?<=:)([^:]*)$",RegexOptions.Singleline);
1 голос
/ 27 мая 2009

Или вы можете просто использовать следующий шаблон:

Regex rx5 = new Regex("[^:]+)$",RegexOptions.Singleline);
1 голос
/ 27 мая 2009

Используйте группу, и вы также можете переписать регулярное выражение в нечто более простое:

Regex rx5 = new Regex(":([^:]*)$",RegexOptions.Singleline);

Тогда у вас есть:

Match ma = rx5.Match("test:1:2:3");
if (ma.Success)
{
    // your content is in ma.Groups[1].Value
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...