Regex 为什么正则表达式模式匹配空值
我的正则表达式模式是Regex 为什么正则表达式模式匹配空值,regex,Regex,我的正则表达式模式是 (\d*\.?\d+)?(\svarious\s)? 我只想匹配十进制数和普通数以及特定的字符串“各种” 但是在结果中,我得到了上面所要求的结果,但是通过它,我也得到了空值 这是我的字符串“期初期末利润3.000000%3.000000亏损3.000000%3.000000资本3.350845%3.346784检查各种减少是否是由于出售或交换各种合伙权益造成的。%%” 我只对8场比赛感兴趣 3.0000003.0000003.0000003.0000003.3508453
(\d*\.?\d+)?(\svarious\s)?
我只想匹配十进制数和普通数以及特定的字符串“各种”
但是在结果中,我得到了上面所要求的结果,但是通过它,我也得到了空值
这是我的字符串“期初期末利润3.000000%3.000000亏损3.000000%3.000000资本3.350845%3.346784检查各种减少是否是由于出售或交换各种合伙权益造成的。%%”代码>
我只对8场比赛感兴趣
3.000000
3.000000
3.000000
3.000000
3.350845
3.346784
各种
各种
但是我得到了147个匹配项,包括上面的8个。您尝试的表达式也匹配了0个字符(无限)。这就是为什么你选错了比赛。请尝试以下方法
((\d*\.?\d+)|(\svarious\s))
您尝试的表达式也匹配0个字符(无限)。这就是为什么你选错了比赛。请尝试以下方法
((\d*\.?\d+)|(\svarious\s))
目前您正在匹配字符串中的所有索引,因为这两个分组都是可选的。有效地允许匹配字符串中的任何位置,后跟零。根据我的评论,您可以尝试:
(?:\d+(?:\.\d+)?|\svarious\s)
请参阅联机
-打开第一个非捕获组:(?:
-1+位\d+
-打开第二个非捕获组:(?:
-一个文字点和1+个数字\。\d+
-关闭第二个非捕获组并将其设置为可选)?
-或:|
-用前导和尾随空格字符按字面意思捕获“各种”\svarious\s
-关闭第一个非捕获组)
(?:\d+(?:\.\d+)?|\svarious\s)
请参阅联机
-打开第一个非捕获组:(?:
-1+位\d+
-打开第二个非捕获组:(?:
-一个文字点和1+个数字\。\d+
-关闭第二个非捕获组并将其设置为可选)?
-或:|
-用前导和尾随空格字符按字面意思捕获“各种”\svarious\s
-关闭第一个非捕获组)
(?:\d+(?:\。\d+)\124s\s)
。不知道你为什么要从字面上捕捉“各种各样的”。请使用上述注释的正则表达式。您当前的整个模式是可选的,因此空匹配项。您可以使用(?:\d+(?:\。\d+)\124n\s)
。不知道你为什么要从字面上捕捉“各种各样的”。请使用上述注释的正则表达式。您当前的整个模式是可选的,因此空匹配。