如何在正则表达式中排除非数字字符

时间:2019-05-21 07:10:49

标签: regex vb.net

我有一个像这样的字符串

Section 78(1) of the blabla

这些是我的正则表达式

\b\s(?!\b(\d{1,3}|\d{1,2}[a-zA-Z]|\d{5,})\b)\b\S*

预期输出为:of the blabla

此正则表达式有效,但由于(),它不排除“ of”。谁能帮我?谢谢

2 个答案:

答案 0 :(得分:0)

尝试以下模式:firebaseRemoteConfig.setConfigSettingsAsync( FirebaseRemoteConfigSettings.Builder().setMinimumFetchIntervalInSeconds(3600L) .build())

说明:

.+\d\)?-与任何字符匹配一次或多次

.+-匹配数字

\d-匹配\)?零次或一次

由于)的贪婪,它将匹配到最后一位,如果放在方括号中,则匹配后面的括号。

Demo

或者使用+

然后所需的输出在第一个捕获组中。

Demo

答案 1 :(得分:0)

似乎您需要更改的只是在\b之前删除\S*并将\S*替换为.+.*(如果匹配可以是一个空字符串)。

\s(?!\b(?:\d{1,3}|\d{1,2}[a-zA-Z]|\d{5,})\b)(.+)

请参见regex demo,获取第1组的值。请注意,我将负前瞻中的第一组匹配数字转换为非捕获组,以避免在结果匹配列表中出现混乱。

VB.NET demo

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

结果:of the blabla