我有一个正则表达式/(-?.?d+(.d{1,2})?))/g
来捕获可以是负数、十进制或正数的数字。我还希望能够捕获特殊符号,特别是πe
.
我尝试过的:
-
/(-?.?d+(.d{1,2})?)|πe)/g
如何捕获这两个符号的表达式,例如234π2
、43.1πe
或3π1e43e
我假设你使用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])*/
(我还删除了不必要的括号。
这是一个有效的正则表达式,它捕获所有字符串中的数字、修饰符(目前为 +-.(和特殊字符,其余的省略。请注意,您的e
很可能会捕获文本中无意e
。由于缺乏其他测试用例,这是我能做的最好的事情。
[-+.]?[πe]?d+[πe]?
- 第一部分是可选的修饰符(来自该类,零次(
- 和另一类可选的特殊字符
- 您的数字,一次或多次
- 特殊字符的最终可选类,零次或多次。