Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex VBA-正则表达式_Regex_Vba - Fatal编程技术网

Regex VBA-正则表达式

Regex VBA-正则表达式,regex,vba,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}-

我有一根这样的线:

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
尝试此模式:“\b\d*\s*\d*-[A-Z]\s[\d]\b\s[A-Z]*\b”

您可以在此处进行测试:


您可能需要将所有带“[0-9]”和“[A-Z]”的“\d”更改为“[A-zA-Z]”。如有必要,您还可以将所有“*”更改为“{3}”或“{2,3}”等(除了“\s*”)中的内容。

您可以执行以下操作:

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

由于缺少零或一次以及Office的古怪语法,请尝试:

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

我对正则表达式相当陌生,但您可以尝试一下:
\d{3}\s\d{2}-[a-Z]{3}\s\d*\s?\d*\s[a-Z]{3}
我觉得它可以缩短一点。