VBA - 正则表达式

时间:2014-07-02 07:36:19

标签: regex vba

我有这样的字符串:

123 45-ABC 12 345 DEF
123 45-ABC 1345 DEF
123 45-ABC 345 DEF

我试图将这些与正则表达式进行模式匹配。我尝试过以下方法:

<[0-9 ]{4;6}-[A-Z]{3} [0-9]{3;5} DEF
<[0-9 ]{4;6}-[A-Z]{3} [0-9 ]{3;6} DEF
<[0-9 ]{4;6}-[A-Z]{3} [0-9]{2}[ ]?[0-9]{1;3} DEF
<[0-9 ]{4;6}-[A-Z]{3} [0-9]{2}[ \r\t\n\f]?[0-9]{1;3} DEF

但他们都没有为我工作......

任何提示?

3 个答案:

答案 0 :(得分:0)

尝试此模式:&#34; \ b \ d * \ s * \ d * - [AZ] \ s [\ d] \ b \ s [AZ] * \ b&#34;

您可以在此处进行测试:http://rubular.com/r/UkvvrJ6tGL

您可能想要更改所有&#34; \ d&#34;用&#34; [0-9]&#34;和&#34; [A-Z]&#34;到&#34; [a-zA-Z]&#34;。您可能还想更改所有&#34; *&#34;用&#34; {3}&#34;或者&#34; {2,3}&#34;等等(&#34; \ s *&#34;除外),如有必要。

答案 1 :(得分:0)

您可以这样做:

Dim ResultString As String
Dim myMatches As MatchCollection
Dim myRegExp As RegExp
Set myRegExp = New RegExp
myRegExp.Pattern = "\d{3}[ ]\d{2}-[A-Z]{3}[ ]\d+(?:[ ]\d+)?[ ][A-Z]+"
Set myMatches = myRegExp.Execute(SubjectString)
If myMatches.Count >= 1 Then
    ResultString = myMatches(0).Value
Else
    ResultString = ""
End If

答案 2 :(得分:0)

由于缺少零合一和Office的古怪语法,请尝试:

<[0-9 ]{4,6}-[A-Z]{3}[0-9 ]{3,8}DEF>