The true power of regular expressions (2012)6 hours agohttps://www.npopov.com/2012/06/15/The-true-power-of-regular-expressions.html编程中的正则表达式远比形式化的“正则语言”理论所暗示的更加强大,能够匹配上下文无关甚至部分上下文敏感的语言。乔姆斯基层级对形式语言进行分类,而像PCRE这样的现代正则表达式实现可以处理超出正则语言范围的语言,包括具有递归模式的语言。使用递归子模式(例如 (?1))允许正则表达式匹配上下文无关语言,如 {a^n b^n}。语法定义可以直接使用DEFINE和命名子模式转换为正则表达式,如RFC 5322电子邮件正则表达式所示。更多...
Pg_re2: Postgres extension for fast, RE2-powered regular expressions in Postgres25 days agohttps://clickhouse.com/blog/introducing-pg_re2-regex-in-postgresClickHouse推出了pg_re2,这是一个为Postgres设计的扩展,利用RE2实现快速正则表达式,强调速度和兼容性。与Postgres的回溯POSIX正则表达式相比,RE2使用有限自动机以实现更快、更可预测的性能,基准测试显示速度提升了1.8倍到8.6倍。pg_re2增加了索引支持(@~运算符),通过btree和GIN索引提供1.1倍到1.8倍的加速,并改进了对模式的trigram处理。与ClickHouse正则表达函数的兼容性是关键,pg_re2解决了语法差异(例如\b表示单词边界与退格键的不同),以确保在使用pg_clickhouse时结果一致。更多...
A few thought about snarky answers on StackOverflow (2019)a month agohttps://www.cargocultcode.com/solving-the-zalgo-regex/正则表达式可以识别XHTML中的独立语法单元,如注释、开始标签和结束标签,但由于缺乏递归功能,无法随意匹配开始标签和结束标签。一个常见的误解是HTML属于2型文法,而正则表达式属于3型文法,因此不可能用正则表达式匹配;但实际上,通过结合计数器或栈进行解析,正则表达式可以处理嵌套结构。解析过程包括用正则表达式进行词法分析和构建树结构,但像DOM这样的标准解析器并不暴露空元素与自闭合标签等区别,这限制了对原始问题的解决方案。StackOverflow的投票系统有时会助长模因和错误信息的传播,比如关于正则表达式和XHTML的那些讽刺性回答,掩盖了合理的解决方案。