正则表达式获取字符串的第一部分

时间:2017-11-03 22:11:36

标签: c# .net regex

我有这个正则表达式

(?<=\d\.\s).+(?=\s-\s)

当我有像

这样的字符串时,效果很好
3. product - sub product

正则表达式给了我产品(第一部分)。如果存在子产品,则该产品将由包含空格(-)的短划线与产品分隔。

但是,有些产品没有副产品。例如:

6. ComprehensiveBolt

正则表达式应该给我comprehensiveBolt但它不会返回任何内容。

我需要对正则表达式进行哪些更新,以便无论子产品​​的存在与否,我都可以获得该产品?

1 个答案:

答案 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).)+