如何从另一个字符串中提取给定的字符串?

How to extract a given string out of another?

我想从另一个字符串中提取给定的字符串。

示例字符串应为:

V_DDRF_2J_WTF

V_ASDF_8J_TLDR

V_LULZ_1337_3J

(提示:整数后面的字母总是 J。)

现在我只想提取字符串的粗体部分的整数。我该如何实现? xJ只会出现在字符串的中间或末尾。

使用 RegExp 搜索“”、数字(序列)和可选的“” - 如:

Option Explicit

Function qq(s) : qq = """" & s & """" : End Function

Dim aTests : aTests = Array( _
     "V_DDRF_2J_WTF" , "_2J_" _
   , "V_ASDF_8J_TLDR", "_8J_" _
   , "V_LULZ_1337_3J", "_3J"  _
)
Dim r : Set r = New RegExp
'r.Pattern = "_\d+J(?:_|$)"
r.Pattern = "_\d+J_?"
Dim i, s
For i = 0 To UBound(aTests) Step 2
    s = r.Execute(aTests(i + 0))(0).Value
    WScript.Echo   qq(aTests(i + 0)) _
                 , qq(s) _
                 , CStr(aTests(i + 1) = s)

Next

输出:

cscript 28561918.vbs
"V_DDRF_2J_WTF" "_2J_" True
"V_ASDF_8J_TLDR" "_8J_" True
"V_LULZ_1337_3J" "_3J" True

您可能需要修改模式,具体取决于您的输入数据;应添加处理不匹配的代码。

您可以使用正则表达式并使用此模式 \d+J\d+\w

您可以测试模式 here