Я уже два дня боролся с этим выражением, поэтому я подумал, что попрошу некоторую надлежащую помощь из мира знаний. Я надеюсь, что кто-то может помочь.Регулярное выражение для прописных букв, цифр и тире только
Это RegEx, который я построил, чтобы получить то, что я хочу.
\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
Thanks! Dave
Я чувствую, вы ищете [ '\ W + (?: - \ ш +) *'] (HTTPS : //regex101.com/r/hK4tZ2/1) –
@DaveStuart - отредактируйте исходное сообщение с кодом VBA. Также я отформатировал ваш вопрос. Если что-то отформатировано неправильно («Я не хочу этого [...]»), пожалуйста, отформатируйте его правильно. –
Wiktor, этот получает ВСЕ текст. Я ищу более конкретное регулярное выражение, чтобы вытащить эти 3 комбинации из GC-113, AO-1-GC-113, AO-2-GC-113. –