我需要找到带有特殊字的文件夹名称。我的代码不起作用。有人会告诉我如何解决它。 我希望带或不带()的文件夹名称没问题。我不确定毯子里有多少位数。有例子:
C:\test\REG33006\2017-03-09
C:\test\REG33006\2017-03-09(1)
C:\test\REG33006\2017-03-09(100)
vb中有我的代码:
Dim Dir as string="C:\test\REG33006\2017-03-09(1)"
Dim patt As String ="^C:\\test\REG33006\\2017-03-09\(*\d*\)*$"
Dim regex As Regex = New Regex(patt)
Dim match As Match = regex.Match(Dir)
If match.Success Then
If Dir.Contains(")") Then
Dim indexStart As Integer = Dir.IndexOf("(")
maxNumber = CInt(Dir.Substring(indexStart + 1, Dir.Length - indexStart))
End If
End If
答案 0 :(得分:1)
括号定义了一个捕获组。 你可以使用......
dim patt as string = "C:\\test\\REG33006\\2017-03-09\((.*)\)"
if match.success then
result = match.groups(1).value
答案 1 :(得分:0)
您可以使用
Dim regex As Regex = New Regex("^C:\\test\\REG33006\\2017-03-09(?:\(([0-9]*)\))?$")
Dim match As Match = regex.Match(Dir)
If match.Success Then
maxnumber = match.Group(1).Value
End If
正则表达式匹配:
^
- 字符串的开头C:\\test\\REG33006\\2017-03-09
- 文字字符序列C:\test\REG33006\2017-03-09
(?:\(([0-9]*)\))?
- 可选的(1或0次)序列:
\(
- (
([0-9]*)
- 第1组(使用match.Group(1).Value
检索其值):零个或多个数字\)
- )
$
- 字符串结束,