Perl:如何匹配FULLWIDTH LATIN SMALL

Fre*_*ord 6 regex unicode perl character-properties

我使用listadmin来管理许多基于邮件的邮件列表.我有很长的主题列表和设置阻止垃圾邮件的地址.最近,我收到了更聪明的垃圾邮件,因为它使用了漂亮的Unicode字符,例如:

主题:您已经看到了很多内容,我们的exx x n汇编了13,000个高清视频,您现在可以随意使用!

要么

主题:高清视频和图像显示图表
是否适用于此

现在我想用一个聪明的Perl正则表达式来阻止它.将这些主题用于hexdump显示许多字符是一个完整的拉丁文小写字母.但是,\p{FULLWIDTH LATIN SMALL LETTER}不起作用:Can't find Unicode property definition "FULLWIDTH LATIN SMALL LETTER"

所以问题是:是否有\p{something}匹配这些全角字符?另外:还有另一种匹配这些角色的方法吗?

amo*_*mon 8

该页面perlunicode记录了可用的unicode字符类.我发现它是perlrebackslash中的一个引用,它记录了特殊字符类和正则\p{...}表达式中的反斜杠序列.

总结是除了最常见的属性类之外的所有属性都需要属性类型和属性值,它们由:或分隔=.但是,似乎没有提到全宽字符作为预定义属性.

但是有Block/ Blkproperty,可以有Halfwidth and Fullwidth Forms(U+FF00- U+FFEF)作为值:

/\p{Block=Halfwidth and Fullwidth Forms}/
Run Code Online (Sandbox Code Playgroud)

这将匹配您的输入(在v16.3上测试).


一个有用的工具是uniprops.

$ uniprops U+FF41
U+FF41 ‹?› \N{FULLWIDTH LATIN SMALL LETTER A}
    \w \pL \p{LC} \p{L_} \p{L&} \p{Ll}
    All Any Alnum Alpha Alphabetic Assigned InHalfwidthAndFullwidthForms
    Cased Cased_Letter LC Changes_When_Casemapped CWCM
    Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT
    Changes_When_Uppercased CWU Ll L Gr_Base Grapheme_Base Graph GrBase
    Halfwidth_And_Fullwidth_Forms Hex XDigit Hex_Digit ID_Continue IDC
    ID_Start IDS Letter L_ Latin Latn Lowercase_Letter Lower Lowercase
    Print Word XID_Continue XIDC XID_Start XIDS X_POSIX_Alnum
    X_POSIX_Alpha X_POSIX_Graph X_POSIX_Lower X_POSIX_Print X_POSIX_Word
    X_POSIX_XDigit
Run Code Online (Sandbox Code Playgroud)

如你所见,\p{Block=Halfwidth and Fullwidth Forms}也可以写\p{In Halfwidth and Fullwidth Forms}.