gpt4 book ai didi

正则表达式匹配 "whole word"返回异常

转载 作者:行者123 更新时间:2023-12-02 06:24:26 25 4
gpt4 key购买 nike

我正在尝试通过 RegEx 进行如下验证...

If Regex.IsMatch(Output, "\b" & "Serial)" & "\b") Then
'do something
end if

但我得到这个参数异常

parsing "\bSerial)\b" - Too many )'s.

我确实理解错误,但我应该如何修改 RegEx 表达式?

更新。“Serial)”这个词是动态生成的。这意味着至少对我来说我也可以为另一个角色获得另一个异常(exception)

最佳答案

假设这是 VB.Net,您需要转义 ):

If Regex.IsMatch(Output, "\b" & "Serial\)" & "\b") Then
'do something
End If

在.Net正则表达式中,括号是分组字符。


如果像您所说的那样动态生成单词“Serial)”,您将必须 escape在将它传递给 RE 引擎之前:

If Regex.IsMatch(Output, "\b" & Regex.Escape("Serial)") & "\b") Then
'do something
End If

正如另一位回答者发布的那样,这与 "Serial) xyz" 不匹配(例如),因为 之间没有 \b) 和空格(\b 仅存在于 \w\W 字符之间,并且 ) 和一个空格是 \W).

你可能不得不求助于一个丑陋的 hack,比如:

If Regex.IsMatch(Output, "\s" & Regex.Escape("Serial)") & "\s") _
Or Regex.IsMatch(Output, "\s" & Regex.Escape("Serial)") & "$") _
Or Regex.IsMatch(Output, "^" & Regex.Escape("Serial)") & "\s") _
Or Regex.IsMatch(Output, "^" & Regex.Escape("Serial)") & "$") _
Then
'do something
End If

我认为也许您可以按照以下行匹配由 (^$) 和 \s 组成的字符类:

If Regex.IsMatch(Output, "[\s^]" & Regex.Escape("Serial)") & "[\s$]") Then
'do something
End If

但这似乎并不基于正则表达式测试器 here所以你可能不得不选择丑陋的 hack 版本,或者你可以将它们组合成一个正则表达式,如下所示:

var input = "Serial)"
var escaped = Regex.Escape (input)
var regex = "\s" & escaped & "\s|^" & escaped & "$|\s" & escaped & "$|^" & escaped & "\s"
If Regex.IsMatch(Output, regex) Then
'do something
End If

关于正则表达式匹配 "whole word"返回异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3289301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com