我的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
谢谢。
答案 0 :(得分:1)
您可以使用
string regex = $@"(?<!\w){prefix}\w*(?:-SDR)?";
请参见regex demo。
或者,要匹配整个单词,可以使用单词边界:
string regex = $@"\b{prefix}\w*(?:-SDR)?\b";
如果\b
中的所有值都以字符char,字母,数字或prefix
开头,则_
单词边界将适用。如果在-SDR
之后没有更多的字符,则末尾的单词边界将变得有意义。
(?:-SDR)?
会与-SDR
字符串相符。
详细信息
\b
-单词边界M20A
-文字字符串\w*
-0个以上的字符字符(?:-SDR)?
-匹配1或0次(因为后面有?
)和-SDR
子字符串的非捕获组\b
-单词边界。