Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 正则表达式。仅查找整数_Regex_Nsregularexpression - Fatal编程技术网

Regex 正则表达式。仅查找整数

Regex 正则表达式。仅查找整数,regex,nsregularexpression,Regex,Nsregularexpression,只查找数学方程中的整数 5+5.5+6/2.0 我想找到5和6,而不是5.5或2.0 要查找小数,我使用\d+(.\d{1,}) 我已经尝试过\b\d+\b,但是找到了所有的数字如果正则表达式引擎支持,可以使用负的lookback和lookahead。正则表达式将是: (?<!\.)\d+(?!\.) (? lookback确保数字串不以开头,因此类似.5的内容不会被匹配。lookahead确保数字串不以结尾,因此5.不会被匹配。您可以使用负数lookahead,如果您的正则表达式引擎。

只查找数学方程中的整数

5+5.5+6/2.0

我想找到5和6,而不是5.5或2.0 要查找小数,我使用\d+(.\d{1,})


我已经尝试过\b\d+\b,但是找到了所有的数字

如果正则表达式引擎支持,可以使用负的lookback和lookahead。正则表达式将是:

(?<!\.)\d+(?!\.)
(?

lookback确保数字串不以
开头,因此类似
.5
的内容不会被匹配。lookahead确保数字串不以
结尾,因此
5.
不会被匹配。

您可以使用负数lookahead,如果您的正则表达式引擎。正则表达式将是:

(?<!\.)\d+(?!\.)
(?

向后查找确保数字串不以
开头,因此类似
.5
的内容不会匹配。向前查找确保数字串不以
结尾,因此
5.
不会匹配。

您可以尝试查找所有没有“.”的数字前面有空格,后面有空格,如下所示:

[^\.]([0-9]+)\s

您可以尝试查找前面没有“.”且后面有空格的所有数字,如下所示:

[^\.]([0-9]+)\s
你可以试试这个:

/(?:^|[^\.])(\d+)(?:\s+|$)/
确保数字不是以点开头,或是字符串的开头,并确保数字后面有空格或字符串的结尾

下面是一个正在运行的PHP示例:

preg_match_all('/(?:^|[^\.])(\d+)(?:\s+|$)/', '5 + 5.5 + 6 / 2.0 + 33 * 16', $matches);
var_dump($matches);
/* Var Dump:
array (size=2)
  0 => 
    array (size=4)
      0 => string '5 ' (length=2)
      1 => string ' 6 ' (length=3)
      2 => string ' 33 ' (length=4)
      3 => string ' 16' (length=3)
  1 => 
    array (size=4)
      0 => string '5' (length=1)
      1 => string '6' (length=1)
      2 => string '33' (length=2)
      3 => string '16' (length=2)
*/
因此,捕获的是5、6、33和16(我添加了一些更长的数字以确保其工作)

可以尝试以下方法:

/(?:^|[^\.])(\d+)(?:\s+|$)/
确保数字不是以点开头,或是字符串的开头,并确保数字后面有空格或字符串的结尾

下面是一个正在运行的PHP示例:

preg_match_all('/(?:^|[^\.])(\d+)(?:\s+|$)/', '5 + 5.5 + 6 / 2.0 + 33 * 16', $matches);
var_dump($matches);
/* Var Dump:
array (size=2)
  0 => 
    array (size=4)
      0 => string '5 ' (length=2)
      1 => string ' 6 ' (length=3)
      2 => string ' 33 ' (length=4)
      3 => string ' 16' (length=3)
  1 => 
    array (size=4)
      0 => string '5' (length=1)
      1 => string '6' (length=1)
      2 => string '33' (length=2)
      3 => string '16' (length=2)
*/

因此,捕获的是5、6、33和16(我添加了一些更长的数字以确保其正常工作)

这有两个问题:第一个字符类使用数字,而后面没有空格的整数(例如最后一个)将不匹配。这有两个问题:第一个字符类使用数字,后面没有空格的整数(例如最后一个)将不匹配。是,
NSRegularExpRSION
s确实支持lookback和lookahead,这将很好地工作。编码为文本字符串的Objective-C代码将如下所示:@“(?Ohhh)标记为“nsregularexpression”。“我在第一次读取时错过了ns部分。是的,
NSRegularExpression
s确实支持向后看和向前看,这将很好地工作。将Objective-C代码编码为文字字符串,它将如下所示:@”(?ohh)标记为“NSRegularExpression”。我在第一次读取时错过了ns部分。