我有一个字符串,内容如下:
Section 78(1) of the blabla
这些是我的正则表达式
\b\s(?!\b(\d{1,3}|\d{1,2}[a-zA-Z]|\d{5,})\b)\b\S*
期望输出结果是:
blabla
这个正则表达式是有效的,但是由于 () 的存在,它没有排除“of”。有人能帮忙吗?谢谢。看起来你只需要改变的是在\S*
前面移除\b
,并将\S*
替换为.+
或.*
(如果匹配可以是空字符串)。
\s(?!\b(?:\d{1,3}|\d{1,2}[a-zA-Z]|\d{5,})\b)(.+)
查看正则表达式演示,获取第一组值。请注意,我将第一组匹配数字的负向先行断言转换为非捕获组,以避免在结果匹配列表中产生混乱。
Dim r As New Regex("\s(?!\b(?:\d{1,3}|\d{1,2}[a-zA-Z]|\d{5,})\b)(.+)")
Dim s As String
s = "Section 78(1) of the blabla"
For Each m As Match In r.Matches(s)
Console.WriteLine(m.Groups(1).Value)
Next
结果:blabla的结果
。
of the blabla
”。 - lara["of", "the", "blabla"]
数组,那么在第一次使用模式时不应该在模式的开头使用单词边界,参见\s(?!\b(\d{1,3}|\d{1,2}[a-zA-Z]|\d{5,})\b)\S*
演示。这符合您的需求吗?请解释规则并说明是否真的需要一个数组作为结果。 - Wiktor Stribiżew