我开始喜欢这个项目在电子表格:作用ColdFusion的正则表达式-ING逻辑奇怪
注意不同大小的破折号 ..较长的一个许可证日期之后。 Chr(8211)如果我是正确的。
我打开电子表格转换为查询:
我得到一个单元格的值和正则表达式是第一位出来。 (正则表达式模式似乎有点多,但它的工作原理)
//i make a new query and set one cell
querysetcell(newquery,"permitDateHeader",rereplace(cellWithPermitDate,
"^[(\W)]*(\w)*(\s)*(\w)*(\s)*(\w)*(:| -| –)+","","all"), insertRow);
不过,我还是离开了我这一点:
通知正则表达式的建筑类型的工作只有两个小破折号。
所以我创建了一个测试页面.CFM(这个其他的东西是在一个控制器上运行)
number = "Permit Number: 2016-1";
date = "- Permit Date – January 13, 2016";
reformednumber = rereplace(number,"^[(\W)]*(\w)*(\s)*(\w)*(\s)*(\w)*(:| -| –)+","","all");
reformeddate = rereplace(date,"^[(\W)]*(\w)*(\s)*(\w)*(\s)*(\w)*(:| -| –)+","","all");
writeDump(reformednumber);
writeDump(reformeddate);
而这就是转储:
许可证日期已成功解析。这一次在.cfm页面而不是在控制器中,并将其放入查询中。这是我看到的唯一区别。同样的正则表达式。
这是怎么发生的?
可能的解决方案只是改变正则表达式。我只是不想提取属于\ W范围的值,例如美元符号。
注如果无法重新创建那么它可能是太“专用”的错误可留在了论坛。
由于您只想放弃模式的第一次出现,您可能想要移除'rereplace'中的''all''参数。 – Alex
如果你认为这个长连字符是char(8211),为什么你在正则表达式中不考虑这个?顺便说一下,ColdFusion asc()函数会告诉你这个字符实际是什么。 –
@DanBracuk 你是对的,但我尝试过,并留下@%〜或一些奇怪的字符来代替输出中的短划线。没有玩那么多。 –