Regex 使用OR的正则表达式模式
用这样的方式Regex 使用OR的正则表达式模式,regex,vb.net,Regex,Vb.net,用这样的方式 Dim regex As New Regex("#(\d{4}$)") 使用此模式,我可以从字符串中读取值 My #1234 number My #125542 Number 但是呢 This is my # 1234 number This is #12345R number 我的正则表达式模式应该检索值 1234 125542 1234 12345 在python中,您可以执行类似的操作 re.search("(\#) ?(\d{4,})", arg).group(2)
Dim regex As New Regex("#(\d{4}$)")
使用此模式,我可以从字符串中读取值
My #1234 number
My #125542 Number
但是呢
This is my # 1234 number
This is #12345R number
我的正则表达式模式应该检索值
1234
125542
1234
12345
在python中,您可以执行类似的操作
re.search("(\#) ?(\d{4,})", arg).group(2)
这将与所有大于4位且以#开头的数字匹配,但仅返回数字
这将与任何长度的所有数字匹配,只返回数字
re.search("(\#) ?(\d+)", arg).group(2)
注意:这个答案是在询问者指定他们使用的编程语言之前写的
Dim regex As New Regex("#\s*(\d{4,})")
当您获得匹配抓取match.Groups(1).Value
图案细节
-a
字符
-0+空格\s*
-第1组:四位或更多数字(\d{4,})
.NET支持非固定宽度的查找,因此与其他语言相比,此问题可以更直接地解决。您可以完全匹配您要查找的内容,而不是返回捕获组的内容
(?您希望匹配的是什么?所有大于4位的数字?只匹配数字。我给出所需的输出bellow@programerAnel您使用的是什么语言?python?这是什么编程语言?请在您的问题中标记它。@SPYBUG96 vb.NETNumbers需要在#mark.之后。可能有两种解决方案#Number和#[Space]Number@programerAnel抱歉,根据您在描述中提供的输入,这应该有效,除非您匹配的字符串中有更多的数字。您能为我们提供更多的输入示例,包括所有可能的情况吗?#1234,#12345,#1234,#12345R我的输出应该是123412345此答案不考虑possible空格。另外,为什么在
周围有一个捕获组,为什么
用反斜杠转义?@CAustin在第一部分中,一定错过了有关空格的信息(简单修复)。我喜欢把我的正则表达式进行分组,只是个人喜好。我认为#是一个特殊字符,所以我转义了它。你能给我一个只包含4个以上数字的示例吗?不管它是否包含#。只有4个以上的数字按顺序排列我很困惑——在你对另一个答案的评论中,你说这个数字需要在a
之后。如果你需要的是4+数字无论周围出现什么,你都可以使用\d{4,}
@CAustin是的,如果我找不到前面有#的数字,我会用这个来找到4个没有#好吧,好了。你的模式就是\d{4,}
Dim r As New Regex("#\s*(\d{4,})")
Dim s As String
s = "My #1234 number, My #125542 Number, This is my # 1234 number, This is #12345R number"
For Each m As Match In r.Matches(s)
Console.WriteLine(m.Groups(1).Value)
Next