C# 使用正则表达式查找子字符串的长度

C# 使用正则表达式查找子字符串的长度,c#,C#,我使用表达式成功地匹配了以下组 \[^\]*\ 示例字符串是 S11H1通道1 c x=y=z=phi=θ= e45,10,H11c,1,交叉,最大x=y=z=phi=θ= 通过上面的表达式,我可以匹配H11CH1C和45,10,H11C,1,cross,max 但是我想捕获起始字符串s11和e,以及h1ch1c和45,10,h1c,1,cross,max请求第一次出现之前的长度与请求第一次出现的索引相同 这里不需要正则表达式,如注释中所述,返回第一次出现的索引的方法就足够了: var leng

我使用表达式成功地匹配了以下组

\[^\]*\

示例字符串是

S11H1通道1 c x=y=z=phi=θ=

e45,10,H11c,1,交叉,最大x=y=z=phi=θ=

通过上面的表达式,我可以匹配H11CH1C和45,10,H11C,1,cross,max


但是我想捕获起始字符串s11和e,以及h1ch1c和45,10,h1c,1,cross,max

请求第一次出现之前的长度与请求第一次出现的索引相同

这里不需要正则表达式,如注释中所述,返回第一次出现的索引的方法就足够了:

var lengthOfSubstring = "rxx(a 0 0 b)(a 0 0 b)".IndexOf(')'); // returns 11
if( lengthOfSubstring < 0 )
{
    // character not found within the string, so the substring doesn't exist
}

为什么是正则表达式?你都试了些什么?我们不是来给你准备好复制的代码的。如果正则表达式不是你的强项,那么开始学习它是一个很好的方法。不要为此而使用正则表达式。这是一个单行程序:注意:IndexOf是零基的,因为所有的东西都应该是零基的,但是因为OP want是子字符串的长度,直到不包括第一个,这就是它。另外:如果IndexOf返回负值-1,则表示字符串中根本不出现搜索字符。因此,这可能值得密切关注。