Я нуждаюсь в помощи, соединяя regex, который распознает слово, которое заканчивается "идентификатором" с чувствительным к регистру соответствием.
Попробовать это регулярное выражение:
\w*Id\b
\w*
позволяет словесные символы перед идентификатор
и , \b
гарантирует, что идентификатор
в конце слова (, \b
является граничным утверждением слова).
Это может помочь:
\b\p{L}*Id\b
Где \ p {L}
соответствует любой букве (Unicode), а \ b
соответствует границе слова.
я использовал бы
\b[A-Za-z]*Id\b
, \b соответствует началу и концу слова т.е. пространства, вкладки или новой строки, или начало или конец последовательности.
[A-Za-z] будет соответствовать любой букве, и * означает, что 0 + подобраны. Наконец существует идентификатор.
Примечание, что это распознает слова, которые имеют прописные буквы в середине, такие как 'teStId'.
я использую http://www.regular-expressions.info/ для regex ссылки
How about \A[a-z]*Id\z
? [Это делает символы перед Id
необязательными. Используйте \A[a-z]+Id\z
, если перед Id
должен быть один или более символов.]
Regex ids = new Regex(@"\w*Id\b", RegexOptions.None);
"\ b означает «разрыв слова» & \ w означает любой символ слова, поэтому \ w * Id \ b означает «{stuff} Id». Если не включать RegexOptions.IgnoreCase, он будет чувствителен к регистру.
Gumbo получает мой голос, однако в ОП не указано, является ли просто "Id" допустимым словом, что означает, что я бы сделал небольшое изменение:
\w+Id\b
1 или более символов слова, за которыми следует "Id" и пробел. Варианты [a-zA-Z] не учитывают неанглийские алфавитные символы. Я также могу использовать \s вместо \b в качестве пробела, а не разрывного пробела. Это будет зависеть от того, нужно ли вам обернуть несколько строк.