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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.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_Numbers - Fatal编程技术网

Regex 匹配由空格分隔的表达式

Regex 匹配由空格分隔的表达式,regex,numbers,Regex,Numbers,我有以下几行: 1 2/5 0.4 1+3i 每个组可以用一个或多个空格分隔。第一个,在他面前可以有空格,也可以没有空格。最后一个可以有空格,也可以没有空格 我想得到: 1 2/5 0.4 1+3i 我怎样才能用正则表达式得到它们? 简单地说,我尝试了一个较短的示例,因为复杂越难: 2 3i 我尝试使用以下正则表达式: /\s*((?:[\d]+)|(?:[\d]*\i))/g 但是我得到了与其整数分开的I: 2 3 i 我找不到一个好的正则表达式来解决我的问题。有解决方案吗?您可以使

我有以下几行:

1 2/5 0.4 1+3i
每个组可以用一个或多个空格分隔。第一个,在他面前可以有空格,也可以没有空格。最后一个可以有空格,也可以没有空格

我想得到:

1
2/5
0.4
1+3i
我怎样才能用正则表达式得到它们? 简单地说,我尝试了一个较短的示例,因为复杂越难:

2 3i
我尝试使用以下正则表达式:

/\s*((?:[\d]+)|(?:[\d]*\i))/g
但是我得到了与其整数分开的
I

2
3
i

我找不到一个好的正则表达式来解决我的问题。有解决方案吗?

您可以使用
匹配
而不是像这样拆分

((?:\d+(?:\.\d+)?)\/(?:\d+(?:\.\d+)?))|((?:[+-]?\d+(?:\.\d+)?)?[+-]?(?:\d+(?:\.\d+)?)?i)|([+-]?\d+(?:\.\d+)?)
正则表达式分解

进一步细分


<强>

重复:-我使用C++。我不是在寻找被空格包围的分隔字符串。我只寻找整数、分数和用空格分隔的复数。因此,在这种情况下,并非所有内容都可以使用match:@rock321987您的解决方案有效。发布为答案?哇,答案真不错!谢谢!最后一件事:如何匹配复数实部和虚部中的分数?@SylvainM请注意不要将交替的最后一项

([+-]?\d+(?:\。\d+)
放在起始或中间。否则就错了。@SylvainM你能举个例子吗?好的!我想将
1/2+2/3i
1/2
的实部和
3/2
的虚部进行匹配,以及您给出的版本的当前功能。@SylvainM所以它可以是
1i/2+2/3i
((?:\d+(?:\.\d+)?)\/(?:\d+(?:\.\d+)?)) #For fractional part
  |
((?:[+-]?\d+(?:\.\d+)?)?[+-]?(?:\d+(?:\.\d+)?)?i) #For complex number
  |
([+-]?\d+(?:\.\d+)?) #For any numbers
(
   (?:\d+(?:\.\d+)?) #Match any number with or without decimal
     \/ #Match / literally
   (?:\d+(?:\.\d+)?) #Match any number with or without decimal
) #For fractional part

| #Alternation(OR)

(
   (?:[+-]?\d+(?:\.\d+)?) #Match real part of the number
   ? #This makes real part optional
   [+-]? #Match + or - and make it optional for cases like \di
   (?:\d+(?:\.\d+)?)? #Match the digits of imaginary part (optional if we want to match only i)
   i #Match i
) #For complex number

| #Alternation(OR)

([+-]?\d+(?:\.\d+)?) #Match any numbers with or without decimal