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