Eswar1988 Ответов: 3

Как получить слово после указанного слова с помощью регулярного выражения C#


Простатспецифический антиген 1.2 NA NA...... возраст до 49 50 - 59 60 - 69 кончено

Я хочу сопоставить "простатспецифический антиген" этому слову и должен получить следующее слово


ожидаемый результат:
1.2

Возможности
< 1.2 или & gt;1.2 или <=1.2, >=1.2

Любые специальные символы или любое отсутствие специальных символов будут стоять перед 1.2 но мне нужно выбрать это слово

Что я уже пробовал:

шаблон строки = простатический специфический антиген\с*(выражение\D+(\.\д*)?|\.\д+);
Совпадение совпадений = регулярное выражение.Совпадение (RawContent, Pattern, RegexOptions.Параметром ignorecase);

если (совпадает.Успех)
{
Ящик для сообщений.Показать (спички.Группы[1].Значение.Метод toString());
Ящик для сообщений.Показать (спички.Ценность.Метод toString());
}

3 Ответов

Рейтинг:
1

#realJSOP

Я предпочитаю подход без регулярных выражений:

string text = "Prostate Specific Antigen 1.2 NA NA . . . . . . . Age yrs up to 49 50 - 59 60 - 69 over";
string searchTerm = "Prostate Specific Antigen";
string value = string.Empty;
int pos = text.IndexOf(searchTerm);
if (pos >= 0)
{
    string temp = text.Substring(pos + searchTerm.Length).Trim();
    string[] parts = temp.Split(' ');
    value = parts[0];
}


Я проверил код с показанной строкой, с текстом, добавленным к строке, без чего-либо, кроме поискового запроса в строке, и, наконец, с пустой строкой.


Kornfeld Eliyahu Peter

Это может быть лучшим решением, так как его легко можно портировать на другие языки с другой поддержкой регулярных выражений из .NET...

Subashchandrabose31

Огромное спасибо....

Member 12491629

Большое спасибо!

Рейтинг:
0

Kornfeld Eliyahu Peter

Для этого вы можете использовать группировку "look behind", но она поддерживается не везде (в .NET она у вас есть)
Язык Регулярных Выражений-Краткий Справочник[^]

(?<=\bProstate Specific Antigen\s)(\w+)


Рейтинг:
0

Patrice T

Попробуйте регулярное выражение: "простатспецифический антиген\s+ ([^]+) \s"

string Pattern = "Prostate\\ Specific\\ Antigen\\s{1,}([^\\ ]+)\\s";


Вот документация по регулярному выражению:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
Это показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение:
Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]


Kornfeld Eliyahu Peter

Он будет соответствовать всему тексту, включая префикс "простатспецифический антиген", а не только "слово" после него...