我有一个正则表达式/(-?.?\d+(\.\d{1,2})?))/g
来捕获可以是负数,小数或正数的数字。我还希望能够捕获特殊符号,特别是πe
。
我尝试过:
/(-?.?\d+(\.\d{1,2})?)|πe)/g
如何将这两个符号捕获为234π2
,43.1πe
或3π1e43e
答案 0 :(得分:1)
Here是一个正在运行的正则表达式,它捕获所有字符串中的数字,修饰符(当前为+ - 。)和特殊字符,并将其余部分留下。请注意,您的e
可能会在文本中捕获无意的e
。由于缺少其他测试用例,这是我能做的最好的。
[-+.]?[πe]?\d+[πe]?
答案 1 :(得分:1)
我假设您使用JS。
只需将此用于(负数):/-?(\d*.)?(\d+)/
这适用于您的符号:/[πe]/
现在我们将这两者结合起来匹配像234π2
这样的倍数。
/((-?(\d*.)?(\d+))|([πe]))+/
如Casimir et Hippolyte所指出的,该模式还匹配-1-1-1
或.1.1.1
。解决这个问题:
第一部分仍然是数字或符号:/((-?(\d*\.)?\d+)|[πe])/
。
但不是简单地重复使用表达式,我们将使用一个不允许使用.1
之类的符号或小数的新表达式:/(((\d+\.)?\d+)|[πe])/
放在一起:/((-?(\d*\.)?\d+)|[πe])(((\d+\.)?\d+)|[πe])*/
(我也删除了那些不必要的括号。)