如何理解复杂的正则表达式

use*_*850 1 regex perl

我曾经看过一个正则表达式的例子

^\s*(+-)?(\d+|\d*\.\d+|\d+\.\d*)(e?(+-)?......$
Run Code Online (Sandbox Code Playgroud)

但我只是不知道如何理解/分析这一个?

Ven*_*nge 7

一次分析一下; 如果你看到a ?,*或者+然后修改了前面的'group'(带括号的组,或'atomic'单位,比如\s或像文字一样e):

^            The start of the string
\s*          Zero or more whitespace characters.
(+-)?        An optional + or -
(
   \d+       One or more digits
 |           or
   \d*\.     Zero or more digits, followed by a .
   \d+       One or more digits
 |           or
   \d+\.     At least one digit, followed by a .
   \d*       Zero or more digits
)
(
 e?          An optional e
 (+-)?       An optional + or -
Run Code Online (Sandbox Code Playgroud)

这里的正则表达式落后了,​​我不确定它......正则表达式中的字面系列s还是正常的省略号.但希望这是一个明确的解释.(顺便说一句,$意思是'字符串的结尾').

  • 但是,`(+ - )?`并不代表"选项+或 - ".它意味着"一个可选的'+ - '序列." (它必须是`(+ | - )?`表示你所说的.) (2认同)
  • 实际上,它必须是(\ + | - ),因为(+ | - )将是语法错误.但是,是的,我让我猜测正则表达式*尝试*做什么(我假设匹配一个像-1.24e + 45这样的数字)颜色我对其实际做的解释. (2认同)