Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用OR的正则表达式模式_Regex_Vb.net - Fatal编程技术网

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
    字符
  • \s*
    -0+空格
  • (\d{4,})
    -第1组:四位或更多数字
请参见,结果:

见:


.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