我的正则表达式:
(1|0|0[\.,]\d+)\((\d+|\d+[\.,]\d+)\)
我正在尝试解析的字符串:
1(1)0(19)0.5(0.2)0(10)0.3(1,9)
Expected matches:
Match 1: '1' '1'
Match 2: '0' '19'
Match 3: '0.5' '0.2'
Match 4: '0' '10'
Match 5: '0.3' '1.9'
由于某种原因,最后一场比赛是'0.3' '19'
,除非我使用0.3(1.9)而不是0.3(1,9)。所以我假设有一些东西与','vs'。',但我认为我的正则表达式expr。会解释这个吗?
我使用以下网站将我的字符串与表达式匹配:
http://www.regexr.com/匹配正常 https://regex101.com/r/uE4vU9/3符合罚款 http://regexpal.com/符合罚款 http://regexhero.net/tester/匹配正确
答案 0 :(得分:0)
所以这是我正在运行的代码:
Public Function ParsePulseTrain(input As String) As List(Of Pulse)
Dim _regex As New System.Text.RegularExpressions.Regex("(1|0|0[\.,]\d+)\((\d+|\d+[\.,]\d+)\)")
Dim pulsetrain As New List(Of Pulse)
If _regex.IsMatch(input) Then
Dim matches As System.Text.RegularExpressions.MatchCollection = _regex.Matches(input)
For Each m As System.Text.RegularExpressions.Match In matches
pulsetrain.Add(New Pulse(Single.Parse(m.Groups(1).Value, Globalization.CultureInfo.InvariantCulture), Single.Parse(m.Groups(2).Value, Globalization.CultureInfo.InvariantCulture)))
Next
End If
Return pulsetrain
End Function
正如您所看到的,在解析m.groups值时,我使用的是使用'。'的invariantculture信息。小数位数。因此问题。