C# 正则表达式与字符串c不匹配#
我写了下面的表达,但它越来越假C# 正则表达式与字符串c不匹配#,c#,regex,C#,Regex,我写了下面的表达,但它越来越假 string val = "VFC - [C:\study\Run20315.5000]" string pattern = "VFC - *C:\\study\\Rund.*" 您忘记了方括号,如果您计划匹配一个数字,则d之前的反斜杠将丢失,并且反斜杠必须加倍-或者更好-使用逐字字符串文字。另外,请注意,*是一个量词,它使前面的模式匹配0次或更多次。如果需要在两个模式之间匹配任意文本,请使用*或*?并在可能出现换行的情况下,使用RegexOptions编译模式
string val = "VFC - [C:\study\Run20315.5000]"
string pattern = "VFC - *C:\\study\\Rund.*"
您忘记了方括号,如果您计划匹配一个数字,则
d
之前的反斜杠将丢失,并且反斜杠必须加倍-或者更好-使用逐字字符串文字。另外,请注意,*
是一个量词,它使前面的模式匹配0次或更多次。如果需要在两个模式之间匹配任意文本,请使用*
或*?
并在可能出现换行的情况下,使用RegexOptions编译模式。单线
:
bool Match= Regex.IsMatch(val, pattern)
请参阅和:
详细信息
-literalVFC-
子字符串VFC-
-尽可能多的零个或多个字符*
-aC:\\study\\Run
子字符串C:\study\Run
-一个数字\d
val
字符串中提取什么?如果你提供准确的要求,你会得到更准确的答案。我投了赞成票,但我认为目的可能是可选的括号。。。maybe@MichaelRandall如果OP澄清我将编辑答案。@WiktorStribiżew我尝试了你的模式,没问题。我试图删除最后一个]
,因为*
可以包含它,那么它也可以工作吗?按照同样的逻辑,我尝试先删除[
因为在那个地方也有一个*
,但它失败了。我不知道为什么?非常感谢。@EricTsui因为*
不是*
,在这个模式中,你匹配的是空格,后跟*
;而在模式的末尾,你匹配的是任何字符(
)后跟*
(表示0到无限次之间的匹配)。它们具有不同的字符匹配。*
不包含]
,而是
包含]
和任何其他字符。@EricTsui只需告诉我您想要什么。如果字符串包含[
在1
和a
之间,则还必须在1
和a
之间的模式中匹配[
。正则表达式不会从字符串中的一个位置跳到另一个位置,而是逐字符从左到右解析。
string pattern = @"VFC - .*C:\\study\\Run\d";
bool Match= Regex.IsMatch(val, pattern, RegexOptions.Singleline);