我有一個正則表達式模式,似乎需要在它的工作空間,但我不明白爲什麼。這是我製作的一種測試方法,我想匹配兩個'
之間的字符,但只有當它被其他字符包圍並且可選空格貫穿始終。爲什麼這個正則表達式需要一個空間?
Private Sub RegexTestSub()
Dim testString = "Foo = ASSIGN/ 'Bar'"
Dim patternA = "(?<=Foo([ ]+)?=([ ]+)?ASSIGN\/([ ']+)?)[a-zA-Z0-9-_. ]+(?=([' ]+)?)"
Dim patternB = "(?<=Foo([ ]+)?=([ ]+)?ASSIGN\/ ([ ']+)?)[a-zA-Z0-9-_. ]+(?=([' ]+)?)"
Dim resultA As Match = Regex.Match(testString, patternA)
Dim resultB As Match = Regex.Match(testString, patternB)
End Sub
兩者的匹配,但是resultB.Value
等於「吧」,但resultA.Value
只是一個空間。正則表達式模式之間的唯一區別是ASSIGN\/
(我知道!)後的空格。我想這個空間是可選的,我認爲([ ']+)?
會實現。
應該匹配其他例子...
Foo=ASSIGN/'Bar'
應符合Bar
Foo = ASSIGN/'Bar'
(可能是多個空格)應符合Bar
Foo = ASSIGN/ 'Foo.Bar.Foo.A1-0'
應符合Foo.Bar.Foo.A1-0
謝謝!這看起來很完美,閱讀起來更清晰!我需要的字符串將始終被單引號包圍,所以第一個選項非常好。 – Notts90
我認爲你可以在這裏沒有看到背後。只需要用[(...)獲取你需要的數據)' –
我需要查看後面的內容來檢查分配的參數,我解析一個編程語言來分配一個特定的參數(在本例中爲'Foo')並獲取分配給參數的字符串(總是被單引號括起來) – Notts90