我曾與該表達式現在奮鬥2天,所以我想我會要求從知識的世界一些適當的幫助。我希望有人能幫幫忙。正則表達式大寫字母,數字及破折號只有
這是我建讓我我想要的正則表達式。
\S*\d*?-[A-Z]*[0-9]*
我只希望大寫字母和數字用破折號,所以它得到GC-113
,AO-1-GC-113
,AO-2-GC-113
,這是偉大的!
「我不想要這個------
,但是這是個好GC-113
,AO-1-GC-113
,AO-2-GC-113
」
但是,如果我遇到一個地方有數量之間沒有空格,而只是另一個字符如逗號或一段時間則返回上整節「GC-113,AO-1-GC-113,AO-2-GC-113
」
一場比賽:「我不想要這個------
,但這是很好的GC-113,AO-1-GC-113,AO-2-GC-113
」
我使用使用RegexBuddy,試圖弄清楚這一點。
這是我使用的是獲得比賽的VBA代碼。
Public Function GetRIs(ByVal vstrInString As String) As Collection
Dim myRegExp As RegExp
Dim myMatches As Variant
Dim myMatch As Variant
Set GetRIs = New Collection
Set myRegExp = New RegExp
myRegExp.Global = True
myRegExp.Pattern = "\S*\d*?-[A-Z]*[0-9]*"
Set myMatches = myRegExp.Execute(vstrInString)
For Each myMatch In myMatches
If myMatch.Value <> "" Then
GetRIs.Add myMatch.Value
End If
Next
End Function
謝謝!因爲只有-
是強制性的子模式的其餘部分可以匹配零次(可從字符串缺席) 戴夫
我覺得你正在尋找['\ w +( - ?\ w +)*'](HTTPS ://regex101.com/r/hK4tZ2/1) –
@DaveStuart - 編輯您原來的職位與VBA代碼。此外,我已格式化您的問題。如果有任何格式不正確(「我不想這樣[...]」),請正確格式化。 –
Wiktor,那個人得到所有文本。我正在尋找一個更具體的正則表達式來獲取這三種組合GC-113,AO-1-GC-113,AO-2-GC-113。 –