我的c#中有以下正则表达式:
(?<!\w)M20A\w+实际代码:
string regex = $@"(?<!\w){prefix}\w+";注意前缀var匹配字符串,如M20A和X50G。
它完全符合以下情况:
M20A0820
M20A1234
M20A7U8V但是现在我从业务上得到了一个新的要求,例如:
M20A-SDR它将是前缀,后面是确切的字符串"-SDR“。不只是一个破折号后面有3个字母数字,而是字面上的"-SDR“。现有的匹配仍然需要工作,但前缀+ "-SDR“也必须匹配。
匹配以下内容的正则表达式是什么?
M20A0820
M20A1234
M20A7U8V
M20A-SDR发布于 2019-11-07 18:01:45
你可以用
string regex = $@"(?<!\w){prefix}\w*(?:-SDR)?";见regex演示。
或者,为了匹配一个完整的单词,您可以使用单词边界:
string regex = $@"\b{prefix}\w*(?:-SDR)?\b";请参阅这个regex演示
如果\b中的所有值都以单词char、字母、数字或_开头,那么起始处的prefix单词边界将工作。如果在-SDR之后没有更多的单词字符,那么末尾的单词边界将是有意义的。
(?:-SDR)?将与-SDR字符串进行光匹配。
详细信息
\b -字边界M20A -一个文字字符串\w* - 0+字词(?:-SDR)? -一个非捕获组,它匹配1或0次(因为它后面有一个? )一个-SDR子字符串。\b -一个词的边界。https://stackoverflow.com/questions/58754580
复制相似问题