Regex: match word that ends with “Id”

后端 未结 6 1639
不知归路
不知归路 2020-12-01 05:52

I need help putting together a regex that will match word that ends with \"Id\" with case sensitive match.

相关标签:
6条回答
  • 2020-12-01 06:32

    Try this regular expression:

    \w*Id\b
    

    \w* allows word characters in front of Id and the \b ensures that Id is at the end of the word (\b is word boundary assertion).

    0 讨论(0)
  • 2020-12-01 06:33

    I would use
    \b[A-Za-z]*Id\b
    The \b matches the beginning and end of a word i.e. space, tab or newline, or the beginning or end of a string.

    The [A-Za-z] will match any letter, and the * means that 0+ get matched. Finally there is the Id.

    Note that this will match words that have capital letters in the middle such as 'teStId'.

    I use http://www.regular-expressions.info/ for regex reference

    0 讨论(0)
  • 2020-12-01 06:34

    This may do the trick:

    \b\p{L}*Id\b
    

    Where \p{L} matches any (Unicode) letter and \b matches a word boundary.

    0 讨论(0)
  • 2020-12-01 06:35

    How about \A[a-z]*Id\z? [This makes characters before Id optional. Use \A[a-z]+Id\z if there needs to be one or more characters preceding Id.]

    0 讨论(0)
  • 2020-12-01 06:48
    Regex ids = new Regex(@"\w*Id\b", RegexOptions.None);
    

    \b means "word break" and \w means any word character. So \w*Id\b means "{stuff}Id". By not including RegexOptions.IgnoreCase, it will be case sensitive.

    0 讨论(0)
  • 2020-12-01 06:58

    Gumbo gets my vote, however, the OP doesn't specify whether just "Id" is an allowable word, which means I'd make a minor modification:

    \w+Id\b
    

    1 or more word characters followed by "Id" and a breaking space. The [a-zA-Z] variants don't take into account non-English alphabetic characters. I might also use \s instead of \b as a space rather than a breaking space. It would depend if you need to wrap over multiple lines.

    0 讨论(0)
提交回复
热议问题