我试图将变量映射到excel中的特定列。让我说要抓住:
2.4 string
string 2.4
但不是:
2.4 string 2.4
string
我使用了这个表达式,但该表达式与我不想要的"2.4 string 2.4"
匹配:
r"([2]\.[4])?\s*(\"|'|inch)?\s*String\s*([2]\.[4])?\s*(\"|'|inch)?"
在字符串"2.4 string"
上使用时,group()
函数仅返回"string"
而不是"2.4 string"
任何人都可能知道解决方案吗?
答案 0 :(得分:1)
您可以使用此正则表达式:
^(?:2\.4 string|string 2\.4)$
示例VBScript:
Dim myRegExp
Set myRegExp = New RegExp
myRegExp.Pattern = "^(?:2\.4 string|string 2\.4)$"
If myRegExp.Test(SubjectString) Then
' Successful match
Else
' Match attempt failed
End If
<强>解释强>
^
锚点断言我们位于字符串的开头2.4 string
|
string 2.4
$
锚点断言我们位于字符串的末尾答案 1 :(得分:0)
您可以使用
(^string\s*(?:2\.4)$|^(?:2\.4)\s*string$)
带有m,g和i标志的(多行,不区分大小写和全局)
这是基本的正则表达式:它将搜索
^string\s*(?:2\.4)$
OR
^(?:2\.4)\s*string$
匹配中的结果是&#34;字符串2.4&#34;或&#34; 2.4字符串&#34;。
基于你提供的正则表达式,我认为你已经知道每个正则表达式代码的含义。
如果您需要更多信息,请与我们联系。
编辑:我看到@ zx81已经有了相同的答案,这也是正确的