-1

我正在对一个大字符串进行正则表达式匹配。那么,问题是我可以重复相同的表达次数有限制吗?在这种情况下,我重复[+-]?((\d+(\.\d*)?)|\.\d+)([eE][+-]?[0-9]+)?了 10 次以上。它在 2e-007 点不匹配。但是,如果您单独使用数字,则表达式将匹配。这让我发疯,想知道有没有更简单的方法。您可以使用正则表达式看到这一点

示例输入

为估值规范“RiskSettings1D”持有“xxxxx”是有问题的。由于校准错误,将忽略市场价格并使用历史波动率。期权是欧洲看跌期权。假设期权价格为 2.000000000000001e-005,执行价格为 100,标的价格为 64.77914897148099,无风险利率为 0.01329492130017084,持有成本为 0,到期年数为 0.005479452054794521。零波动的价格是 35.2208253705315。波动率为 500 的价格为 36.96626067864203。模型没有校准到 2e-007 的给定市场价格。实际总数为 0.352208。

正则表达式:

为估值规范“[^”]持有“[^” ]是有问题的。[\s]*给定的市场价格将被忽略,由于校准错误,将使用历史波动率。[\s]选项是(n)? [^.] .[\s]给定期权价格为 [+-]?((\d+(.\d )?)|.\d+)([eE][+-]?[0-9]+) ?, 行使价为 [+-]?((\d+(.\d*)?)|.\d+)([eE][+-]?[0-9]+)?, 标的价格为 [+ -]?((\d+(.\d*)?)|.\d+)([eE][+-]?[0-9]+)?, 无风险利率为 [+-]?((\ d+(.\d*)?)|.\d+)([eE][+-]?[0-9]+)?, 携带成本为 [+-]?((\d+(.\d* )?)|.\d+)([eE][+-]?[0-9]+)?,有效期为 [+-]?((\d+(.\d*)?)|.\ d+)([eE][+-]?[0-9]+)?.[\s]波动率为零的价格是 [+-]?((\d+(.\d )?)|.\d+) ([eE][+-]?[0-9]+)?.[\s]波动率为 500 的价格为 [+-]?((\d+(.\d )?)|.\d+)([eE][+-]?[0-9]+)?.[\s]*Models没有校准到给定的市场价格

4

1 回答 1

1

我稍微调整了你的正则表达式("[^"]" -> "[^"]+"和类似的,将所有空格设为零或多,这在你提供的那个中没有结果,并添加了似乎丢失的输入的最后一部分?)这与示例相匹配输入。它在 RegExr 中不起作用,我不确定捕获组的数量是否有限制或类似的东西?相反,我使用了 rubular.com,请在此处查看确切的查询:http ://rubular.com/r/OHr0UdI1lO

持有 "[^"]+" 为估值规范 "[^"]+" 创建有问题。\s*给定的市场价格将被忽略,由于校准错误,将使用历史波动率。\s*选项是 a( n)? [^.]+.\s*给定期权价格为 [+-]?((\d+(.\d+)?)|.\d+)([eE][+-]?[0-9]+) ?,\s*行使价为 [+-]?((\d+(.\d+)?)|.\d+)([eE][+-]?[0-9]+)?,\s*基础价格为 [+-]?((\d+(.\d+)?)|.\d+)([eE][+-]?[0-9]+)?,\s*无风险利率为 [ +-]?((\d+(.\d+)?)|.\d+)([eE][+-]?[0-9]+)?,\s*进位成本为 [+-]? ((\d+(.\d+)?)|.\d+)([eE][+-]?[0-9]+)?,\s*有效期为 [+-]?((\d+ (.\d+)?)|.\d+)([eE][+-]?[0-9]+)?.\s*波动率为零的价格为 [+-]?((\d+(.\ d+)?)|.\d+)([eE][+-]?[0-9]+)?.\s*波动率为 500 的价格为 [+-]?((\d+(.\d+)? )|.\d+)([eE][+-]?[0-9]+)?.

于 2012-08-31T21:17:33.583 回答