Вы можете использовать группу захвата вокруг матча и использовать обратную ссылку в негативном режиме поиска.
Предположите, мы хотим, чтобы у вас были уникальные 3-значные группы от 123 456 789 123 456 789
: 123
, и 789
. Нам нужно разместить [0-9]{3}
в группу захвата, такую как ([0-9]{3})
, а затем проверить, нет ли повторения этой захваченной группы позже в строке. Итак, мы только фиксируем последнюю дублирующуюся группу.
([0-9]{3})(?!.*?\1.*$)
Пример кода VBA:
Sub REGEXP_TEST_UNIQUE()
Dim strPattern As String
Dim strInput As String
Dim regEx As New RegExp
Dim objMatches As MatchCollection
strInput = "123 456 789 123 456 789"
strPattern = "([0-9]{3})(?!.*?\1.*$)"
With regEx
.Global = True
.Pattern = strPattern
End With
If regEx.test(strInput) Then
Set objMatches = regEx.Execute(strInput)
For i = 0 To objMatches.Count - 1
Range("A2").Value = Range("A2").Value + " + " + objMatches.Item(i)
Next
End If
End Sub
значение ячейки "A2" становится:
123 + 456 + 789