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)
请参阅和:

详细信息

  • VFC-
    -literal
    VFC-
    子字符串
  • *
    -尽可能多的零个或多个字符
  • C:\\study\\Run
    -a
    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);