获取匹配模式 RUTA 的最后 3 个字符
Get last 3 characters of matched pattern RUTA
我正在尝试获取模式的最后 3 个字符。但是我不知道该怎么做。
请分享您对此的看法。
PACKAGE uima.ruta.example;
Document{->RETAINTYPE(SPACE)};
DECLARE VarA;
((W|NUM)* (W|NUM)*){REGEXP(".{12}")-> MARK(VarA),MARK(EntityType,1), UNMARK(VarA)};
I/P - AB1234567CAB
O/P - CAB
您可以使用 $
指示模式中源字符串结尾的位置。对于您的示例,您需要最后 3 个字符,因此您可以使用如下模式:
.{3}$
获取最后3个字符。这将得到任何字符(除了 \n
),但你可以更具体,例如,如果你只想要大写字母,你可以使用:
[A-Z]{3}$
或者如果您可以接受大写、小写或数字,您可以使用
\w{3}$
在 regex101.com 上进行实验,看看什么适合您。
假设您的数据在单元格 A1 中
你可以使用这两个的第二个宏
Option Explicit
Sub Extract_Laste_3Carachters(st As Range, Patt$, n)
Dim Obj As Object
Set Obj = CreateObject("Vbscript.RegExp")
With Obj
.Pattern = Patt
.Global = True
End With
If Len(st) <= 3 Then st.Offset(, 1) = st: Exit Sub
If Obj.test(st) Then
If n > Obj.Execute(st).Count Then n = Obj.Execute(st).Count
st.Offset(, 1) = _
Obj.Execute(st)(n - 3) _
& Obj.Execute(st)(n - 2) _
& Obj.Execute(st)(n - 1)
End If
End Sub
'++++++++++++++++++++++++++++++++
Sub Test_Me()
Call Extract_Laste_3Carachters(Range("a1"), ("\w"), Len(Range("a1")))
End Sub
我试过下面的代码,现在可以用了!
PACKAGE uima.ruta.example;
Document{->RETAINTYPE(SPACE)};
"(?i)\b(?=.*\d)[1]{0,1}[A-Z0-9]{2}[\s |-]{0,2}[A-Z0-9]{7}[\s |-]{0,2}([A-Z]{3})\b" ->1 = EntityType;
我正在尝试获取模式的最后 3 个字符。但是我不知道该怎么做。
请分享您对此的看法。
PACKAGE uima.ruta.example;
Document{->RETAINTYPE(SPACE)};
DECLARE VarA;
((W|NUM)* (W|NUM)*){REGEXP(".{12}")-> MARK(VarA),MARK(EntityType,1), UNMARK(VarA)};
I/P - AB1234567CAB
O/P - CAB
您可以使用 $
指示模式中源字符串结尾的位置。对于您的示例,您需要最后 3 个字符,因此您可以使用如下模式:
.{3}$
获取最后3个字符。这将得到任何字符(除了 \n
),但你可以更具体,例如,如果你只想要大写字母,你可以使用:
[A-Z]{3}$
或者如果您可以接受大写、小写或数字,您可以使用
\w{3}$
在 regex101.com 上进行实验,看看什么适合您。
假设您的数据在单元格 A1 中 你可以使用这两个的第二个宏
Option Explicit
Sub Extract_Laste_3Carachters(st As Range, Patt$, n)
Dim Obj As Object
Set Obj = CreateObject("Vbscript.RegExp")
With Obj
.Pattern = Patt
.Global = True
End With
If Len(st) <= 3 Then st.Offset(, 1) = st: Exit Sub
If Obj.test(st) Then
If n > Obj.Execute(st).Count Then n = Obj.Execute(st).Count
st.Offset(, 1) = _
Obj.Execute(st)(n - 3) _
& Obj.Execute(st)(n - 2) _
& Obj.Execute(st)(n - 1)
End If
End Sub
'++++++++++++++++++++++++++++++++
Sub Test_Me()
Call Extract_Laste_3Carachters(Range("a1"), ("\w"), Len(Range("a1")))
End Sub
我试过下面的代码,现在可以用了!
PACKAGE uima.ruta.example;
Document{->RETAINTYPE(SPACE)};
"(?i)\b(?=.*\d)[1]{0,1}[A-Z0-9]{2}[\s |-]{0,2}[A-Z0-9]{7}[\s |-]{0,2}([A-Z]{3})\b" ->1 = EntityType;