正则表达式:计算速度和不完整的公式运行你好,
我有两个关于正则表达式的问题。
- Below I've shown some code. I'm creating formula columns that parse information from another column. The formulas grab the correct information, but ALWAYS stop at row 3024. The datasets I work with can be tens or rows, or much larger.
dt << New column( "Column 1", formula( regex( :Other column, "pattern" ) ) );
dt << New column( "Column 2", formula( regex( :Other column, "pattern", "\1" ) ) );
dt << New column( "Column 3", formula( num( regex( :Other column, "pattern" ) ) ) );<BR /><BR />dt << Rerun Formulas; // Doesn't help!
- 在调试器中,对我的脚本进行计时,计时器显示脚本在大约 1 秒内完成,并且这三行代码占用了大部分时间。还有其他一些小事情在发生。但是,大多数情况下,JMP 在运行它时会锁定,我必须停止在调试器中运行脚本,或者我必须在任务管理器中结束任务。
我曾在 for() 和 for each() 中使用过正则表达式,也遇到过类似的问题。不过,正则表达式看起来更像 for() 和 for each(),因为公式会定期完成,但完成脚本运行所需的时间会锁定 JMP,并且需要很长时间(如果它能完成的话)。
这是非常基本的正则表达式脚本。我在其他项目中使用更大的数据集在 for 循环中做过更复杂的事情。数据集本身是以 CSV 格式导入的,但这是我能发现它与其他数据集之间唯一的区别。你知道发生了什么吗?
数据访问视窗回复:正则表达式:计算速度和不完整的公式运行不知道发生了什么,但如果您不需要公式,您可以尝试使用 << 设置每个值。
回复:正则表达式:计算速度和不完整的公式运行我猜想该模式包括星号或加号操作,嵌套方式对某些数据来说需要很长时间,并且第 3024 行具有该数据模式。回复:正则表达式:计算速度和不完整的公式运行不幸的是,我使用正则表达式的原因是因为搜索字符串中感兴趣的 num() 的位置和值发生了变化,但它的格式保持不变。 如果我将 regex 函数移动到不同的行并传递检索到的数字(字符串)以在创建行后设置每个值( num() )以填充该行,则 regex() 函数仍然存在相同的问题。
回复:正则表达式:计算速度和不完整的公式运行天哪,这太尴尬了…… 我查看了我的正则表达式模式,并开始与第 3024 行及其周围的字符串进行比较。我认为我们的数据库需要一些微调;在许多这些行中,该字符串与正则表达式模式不匹配。哎呀!
谢谢你带领我做这件事, @Craige_Hales !