c#正则匹配,匹配括号,中括号等
最近需要识别出⼀段⽂字⾥的引⽤,即 [数字] 的格式,学习了⼀下关于括号,中括号的识别内容,这⾥识别的是中括号,⼩括号什么的都是同理
零宽断⾔
零宽断⾔正如它的名字⼀样,是⼀种零宽度的匹配,它匹配到的内容不会保存到匹配结果中去,最终匹配结果只是⼀个位置⽽已。作⽤是对指定位置增加限制
表达式作⽤
(?=exp)匹配exp前⾯的位置
––
(?<=exp)匹配exp后⾯的位置
––
(?!exp)匹配后⾯跟的不是exp的位置
––
(?=exp)匹配前⾯不是exp的位置
识别括号所有内容
因此,为了识别出中括号内的内容,
pattern=@"(?<=\[)([\s\S]*)(?=\])"
例如,对于afa[Aa7]sdjf,可以识别出Aa7
识别括号内的数字
pattern=@"(?<=\[)([1-9][0-9]*?)(?=\])"
正则表达式获取括号内容按特定格式识别括号
由于我要识别的内容包括[2],[2,3,4]这些格式的,因此这⾥的正则表达式
pattern=@"(?<=\[)((\d+,)*(\d+,)*\d+)(?=\])"
这⾥还考虑了逗号半⾓的和全⾓的情况。
最后
附上⼀段较为完整的识别代码
string pattern =@"(?<=\[)((\d+,)*(\d+,)*\d+)(?=\])";
MatchCollection matchCollection = Regex.Matches(fullText, pattern);
if(matchCollection.Count >0)
{
foreach(var match in matchCollection)
{
string strNum = match.ToString();
}
}
使⽤MatchCollection 获取所有满⾜条件的识别内容
使⽤Match 获取第⼀个符合条件的识别内容。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论