我曾与该表达式现在奋斗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。 –