Доброго времени суток, прошу помощи в изменении патерна для регулярок.
В данный момент код выглядит вот так. Он забирает данные из текста и выводит в другую ячейку, проблема лишь в том , что делает он это некорректно.
Например: Голос [сказал](glagol :: edinstvennii :: no_role :: no_group) , что он новый вид [жизни](sushestvitelnoe :: edinstvennii :: no_role :: no_group) . По моей задумке он должен извлечь
Скрытый текст |
---|
glagol;sushestvitelnoe | | edinstvennii;edinstvennii | | no_role;no_role | | no_group;no_group |
|
а извлекает
Скрытый текст |
---|
glagol;sushestvitelnoe | edinstvennii;no_group) , что он новый вид [жизни](sushestvitelnoe;no_role | edinstvennii;no_group) , что он новый вид [жизни](sushestvitelnoe;no_role | edinstvennii :: no_role :: no_group;edinstvennii :: no_role :: no_group |
|
Прошу помощи в изменении патерна, заранее спасибо.
Код прикладываю, так же как и файл для теста
Скрытый текст |
---|
Код |
---|
Function VzatIzSkobok()
Dim text As String, LeftRazdel As String, RightRazdel As String, Scepka As String, LeftRazdel1 As String, RightRazdel2 As String
LeftRazdel = "]\("
RightRazdel = " :: "
Scepka = ";"
text = TextBox1.text
With CreateObject("VBScript.regexp")
.Global = True
.Pattern = "(?:\" & LeftRazdel & ")(.+?)(?:\" & RightRazdel & ")"
If .Test(text) Then
For Each sM In .Execute(text)
ss = ss & Scepka & sM.SubMatches(0)
Next
VzatIzSkobok = Mid(ss, Len(Scepka) + 1)
End If
End With
End Function
Function VzatIzSkobok2()
Dim text As String, LeftRazdel As String, RightRazdel As String, Scepka As String, LeftRazdel1 As String, RightRazdel2 As String
LeftRazdel = " :: "
RightRazdel = " :: "
Scepka = ";"
text = TextBox1.text
LeftRazdel1 = "]("
RightRazdel2 = ")"
With CreateObject("VBScript.regexp")
.Global = True
.Pattern = "(?:" & LeftRazdel & ")(.+?)(?:" & RightRazdel & ")"
If .Test(text) Then
For Each sM In .Execute(text)
ss = ss & Scepka & sM.SubMatches(0)
Next
VzatIzSkobok2 = Mid(ss, Len(Scepka) + 1)
End If
End With
End Function
Function VzatIzSkobok3()
Dim text As String, LeftRazdel As String, RightRazdel As String, Scepka As String, LeftRazdel1 As String, RightRazdel2 As String
LeftRazdel = " :: "
RightRazdel = " :: "
Scepka = ";"
text = TextBox1.text
With CreateObject("VBScript.regexp")
.Global = True
.Pattern = "(?:" & LeftRazdel & ")(.+?)(?:" & RightRazdel & ")"
If .Test(text) Then
For Each sM In .Execute(text)
ss = ss & Scepka & sM.SubMatches(0)
Next
VzatIzSkobok3 = Mid(ss, Len(Scepka) + 1)
End If
End With
End Function
Function VzatIzSkobok4()
Dim text As String, LeftRazdel As String, RightRazdel As String, Scepka As String, LeftRazdel1 As String, RightRazdel2 As String
LeftRazdel = " :: "
RightRazdel = "\)"
Scepka = ";"
text = TextBox1.text
With CreateObject("VBScript.regexp")
.Global = True
.Pattern = "(?:" & LeftRazdel & ")(.+?)(?:" & RightRazdel & ")"
If .Test(text) Then
For Each sM In .Execute(text)
ss = ss & Scepka & sM.SubMatches(0)
Next
VzatIzSkobok4 = Mid(ss, Len(Scepka) + 1)
End If
End With
End Function
|
|