我有这个正则表达式
(?<=\d\.\s).+(?=\s-\s)
当我有像
这样的字符串时,效果很好3. product - sub product
正则表达式给了我产品(第一部分)。如果存在子产品,则该产品将由包含空格(-
)的短划线与产品分隔。
但是,有些产品没有副产品。例如:
6. ComprehensiveBolt
正则表达式应该给我comprehensiveBolt
但它不会返回任何内容。
我需要对正则表达式进行哪些更新,以便无论子产品的存在与否,我都可以获得该产品?
答案 0 :(得分:2)
这是一种方式 请注意,只有在您的产品可能是短语时才需要这样做。
Sub checkk()
Dim cl As Range, rng As Range
Dim LastRow As Long
Dim celltxt As String
Dim i As Integer
i = 1
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
Set rng = Range("A1:A" & LastRow)
For Each cl In rng.SpecialCells(xlCellTypeVisible)
cl.Select
celltxt = ActiveCell.Text
If InStr(1, celltxt, "CHECKED OUT") Or InStr(1, celltxt, "CHECKED IN") Then
MsgBox ("found it")
else
MsgBox ("no")
End If
Next cl
If i > 1 Then
MsgBox ("Looks like you have to do some more filtering, sort column A by
color to see what was tagged")
End If
End Sub
https://regex101.com/r/uC2yDs/1
部分解释
(?<=\d\.\s)(?:(?!\s-\s|\d\.\s).)+