Если его всегда x = число , я думаю, что проще зацикливаться на каждом значении с разделителями, затем прочитать значение =
для значения:
Function MaxValue(data As String)
Dim i As Long, value As Double
Dim tokens() As String: tokens = Split(data, ",")
For i = 0 To UBound(tokens)
'// get the value after = as a double
value = CDbl(Trim$(Mid$(tokens(i), InStr(tokens(i), "=") + 1)))
If (value > MaxValue) Then MaxValue = value
Next
End Function
Могли Вы пробовать:
^(?:\b\w+\b[\s\r\n]*){1,250}$
Это ограничило бы 250 словами по нескольким строкам.
Я боюсь что начальное суждение Alan:
/^\w+(?:\s+\w+){0,249}$/
мог бы быть случай катастрофического отслеживания в обратном порядке
Когда вложенные операторы повторения, сделайте абсолютно уверенными, что существует только один способ соответствовать тому же соответствию
Как насчет того, чтобы разделить текст с regex (говорят "\s +"), и затем подсчет длины получающегося списка? Это было бы несколько легче считать.