2024年3月8日

正则表达式: Unicode 字符集

\uFFFF where FFFF are 4 hexadecimal digits Unicode code point \u{FFFF} where FFFF are 1 to 4 hexadecimal digits Unicode code point \xFF where FF are 2 hexadecimal digits Hexadecimal escape \xFFFF where FFFF are 4 hexadecimal digits Unicode code point \x{FFFF} where FFFF are 1 to 4 hexadecimal digits Unicode code point \X Unicode grapheme \pL where L is a Unicode category Unicode category \PL where L is a Unicode category Unicode…
2024年3月8日

正则表达式: EmEditor 正则表达式引擎 Boost.Regex / Onigmo

EmEditor 正则表达式引擎 EmEditor版本 15.7除了之前默认的 Boost.Regex 正则表达式引擎之外,你还能把 Onigmo 选择为正则表达式引擎。 在[工具]→[自定义]→[搜索]的“默认正则表达式引擎”中选择默认引擎。另外,在执行搜索/替换时,还可以通过按“搜索”/“替换”对话框中的“高级”按钮进行切换。 如果你把 Onigmo 选为正则表达式引擎,你能用更多字符类型,例如 \p{Han}, \p{Hangul}, \p{Hebrew} 等。 要查找更多有关 Onigmo 正则表达式语法,请查看 https://github.com/k-takata/Onigmo/blob/master/doc/RE 以及 Unicode 属性 https://github.com/k-takata/Onigmo/blob/master/doc/…
2024年3月4日

正则表达式: 正向肯定预查 (?=pattern) 正向否定预查 (?!pattern) 反向肯定预查 (?<=pattern) 反向否定预查 (?<!pattern) / 前瞻 负前瞻 后顾 负后顾 / 先行断言 先行否定断言 后行断言 后行否定断言 Lookahead / Lookbehind Assertion

先行断言 Positive and Negative Lookahead “先行断言”指的是,x只有在y前面才匹配,必须写成/x(?=y)/。比如,只匹配百分号之前的数字,要写成/\d+(?=%)/。“先行否定断言”指的是,x只有不在y前面才匹配,必须写成/x(?!y)/。比如,只匹配不在百分号之前的数字,要写成/\d+(?!%)/。 /\d+(?=%)/.exec('100% of US presidents have been male') // ["100"] /\d+(?!%)/.exec('that’s all 44 of them') // ["44"] 上面两个字符串,如果互换正则表达式,就不会得到相同结果。另外,还可以看到,“先行断言”括号之中的部分((?=%)),是不计入返回结果的。 后行断言 Positive and Negative Look…
2024年1月4日

正则表达式: MariaDB / EmEditor 正则表达式 去除字符串中的控制字符 / 不可见字符 / 隐藏 隐形 幽灵 字符

MariaDB 去除控制字符 update `wp_posts` set `post_content`=REGEXP_REPLACE(`post_content`, '[^\\p{L}\\p{M}\\p{N}\\p{P}\\p{S}\\p{Z}\\n\\t]', ''); 说明: Unicode字符 \p{xx}是具有 xx 属性的字符,而\P{xx}是没有 xx 属性的字符。 上面 xx 表示的属性名仅限于 Unicode 脚本名称、一般类别属性和匹配任何字符(包括换行符)的“ Any”。那些不属于已识别脚本的脚本被集中在一起称为“公共”。 P 和 P 的一般类属性 General Category Properties For \p and \P Property Description C Other Cc Control Cf Format Cn Unassigned Co Privat…
2023年12月20日

正则表达式: EmEditor 正则表达式 分组捕获

例: 下面html代码中,img标签为缩略图,a标签为原图。 <a href="https://www.example.com/pic.jpg"><img src="https://www.example.com/pic-150x15expvaiuyyocqkccxydtlqkiiicsbgujf.jpg"></a> 现要在EmEditor中将a标签去掉,同时将img标签中的缩略图改为原图。 利用正则表达式的分组: 查找:<a href="[^"]*?/(?'tag1'[^/"]*?)\.(?'tag2'[^/"]*?)">(?'tag3'<img src="[^"]*?/(?&tag1))-\d+?x\d+?(?'tag4'\.(?&tag2)">)&…
2023年10月30日

正则表达式: 匹配中文全角标点符号

中文标点符号有如下这些: 句号 (。) 问号 (?) 叹号 (!) 逗号 (,) 顿号 (、) 分号 (;) 冒号 (:) 引号 (“”‘’) 括号 (()[]{}〔〕【】) 破折号 (——) 省略号 (……) 着重号 (.) 书名号 (《》〈〉) 间隔号 (·) 连接号 (—) 专名号 (____) 分隔号 (/) 去除半角标点符号,匹配全角标点符号: [。?!,、;:“”‘’()〔〕【】《》〈〉…—] 加上匹配所有的汉字: [一-龥。?!,、;:“”‘’()〔〕【】《》〈〉…—]   参考: 标点符号: 点号:句号( 。)、问号( ?)、感叹号( !)、逗号( ,)顿号(、)、分号(;)和冒号(:)。 标号:引号(“ ” ‘ ’)、括号〔( ) [ ] { } 〕、破折号( ── )、省略号(······)、着重号( .)、书名号(《 》〈 〉)、间隔号(·)、连接号( — )和专名号( ____ )。 符号:注释号( * )、隐…
2023年10月1日

正则表达式: 匹配所有的汉字

正则表达式用双字节字符的编码匹配汉字在有的环境下不成功: [\u4e00-\u9fa5] 后来发现可以直接这样匹配中文: [一-龥] 缺点是每次要记住并打出“龥”这个字,最近发现一个简单好记的办法: [一-龟] 经过测试,可以匹配3500常用汉字,和7000通用汉字。 如果想匹配所有全角符号,包含汉字和全角标点,可以用: [^\x00-\xff] 另外,全角转半角的替换命令(主要是因为sed的转义,后边的全角标点比较麻烦): sed -i 'y/abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.。,?;:‘’“”、()`~!@#%*/abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ..…
2023年9月30日

正则表达式: 正则表达式编辑和测试工具

1. 在线工具: https://regex101.com/ 2. 软件工具: 1. Expresso https://ultrapico.com/Expresso.htm The premier regular expression development tool The award-winning Expresso editor is equally suitable as a teaching tool for the beginning user of regular expressions or as a full-featured development environment for the experienced programmer or web designer with an extensive knowledge of regular expressions. 2. kodos http…
2023年9月7日

正则表达式: EmEditor正则表达式匹配多行字符

1. 问题概述: EmEditor默认情况下,搜索时使用正则表达式,不能对多行进行匹配。 例如: 默认情况下,正则表达式<p>([\s\S]*?)</p>不能匹配以下内容: <p> abc 123 xyz </p> 2. 相关原因: EmEditor 帮助中的说明: “搜索正则表达式的附加行”文本框 指定用正则表达式搜索一个字符串时的附加行的行数。EmEditor 会把一个字符串作为参数一行行地传递给正则表达式功能。然而通过这种方法,正则表达式 <td>.*?</td> 无法匹配 <td> 和 </td> 之间的字符串如果字符串中包含一个换行符。在这个文本框中指定一个比零大的数值,并勾选正则表达式“.”匹配换行符复选框可以让 EmEditor 在指定的行数内搜索字…