Как проверить и извлечь строку через RegEx? - PullRequest
2 голосов
/ 24 октября 2010

Я пытаюсь проверить, заканчивается ли строка в "@something", и извлечь из нее "что-то", если это так.Например, я пытаюсь сделать что-то вроде этого:

string temp = "//something//img/@src"
if (temp ends with @xxx)
{
   string extracted = (get "src");
   ...
}
else
{
   ...
}

Как мне это сделать?

Ответы [ 3 ]

1 голос
/ 24 октября 2010

Не используйте для этого регулярное выражение, оно того не стоит.

string temp = "//something//img/@src"
int pos = temp.LastIndexOf('@');
if (pos != -1)
{
   string extracted = temp.Substring(pos+1);
   ...
}
else
{
   ...
}
1 голос
/ 24 октября 2010

Из ваших комментариев на мой другой ответ, кажется, что вам нужно что-то вроде этого:

string temp = "//something//img/@src";
var match = Regex.Match(tmp, @"/@([\w]+)$", RegexOptions.RightToLeft);
if (match.Success)
{
   string extracted = match.Groups[1].Value;
   ...
}
else
{
   ...
}
0 голосов
/ 24 октября 2010

Попробуйте следующее

var match = Regex.Match(tmp, @".*@(.*)$");
if ( match.Success ) { 
  var extracted = match.Groups[1].Value;
  ...

Хитрость здесь - () в регулярном выражении.Это группирует окончательное соответствие в неназванную группу.Затем к этому совпадению можно получить доступ через член Groups в переменной Match по индексу.Это первая группа, поэтому индекс 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...