根据系统和文本编辑器的不同,换行的标识符往往有CR LR
、CR
、LF
三种写法。在计算机时代,这三种写法所表达的意义是完全相同的,从不用来区别文本意义,仅仅是不同软件有不同选择而已。因此,很多计算机语言或计算机程序在处理文本/字符串时,都会选择将换行标识符转换成统一的写法再进行处理,以避免一些不必要的麻烦。
而Quicker的提供的正则表达式似乎未作如此处理,而是将三者处理成了三个不同的字符串。比如以下这段文字:
AAA BBB
竟然出现了无法被^[\S\s]+\n+[\S]+$
匹配的情况。由于无法预知文本环境,必须要写成^[\S\s]+[\r\n]+[\S]+$
才比较保险,保证各种情况都能匹配。这不仅没必要,还很容易造成麻烦。建议将三者视为同一符号来处理。
连Python这种编程语言的open()
函数都有universal new line模式,而且是默认开启的,即读入文本中无论CR LR
、CR
还是LF
都自动转成LF
。Quicker作为一个低代码平台总不至于比编程语言还要底层吧,做这样的统一处理是完全可能而且有很大好处的。
暂时没见过什么语言的正则表达式会把几种换行符自动转换成一种的,Quicker模块是直接调用的C#的正则方法,不加限制可以满足更多的需求。
如果有需要的话,在前面替换和稍改正则都挺方便的。
我不是说Python吗。。。
而且严格来说不是正则,而是在默认状态下,主要被Python存储的字符串,其换行符都仅是\n。
对的,Python是从字符串和读写文件中保证换行符统一为\n,不是在正则这个模块上。而C#不是这样,所以这个是偏底层的东西,不适合在单独一个正则模块上进行修改。
嗯嗯,好的,谢谢。