1
154
Perl 5.10及更高版本支持辅助的垂直和水平字符类,
最干净的解决方案是使用
水平空白
字符类
这个
垂直空间
模式
有七个垂直空格字符匹配
所有空白字符都是
垂直的
或
水平的
没有重叠,但它们不是适当的子集,因为
|
2
300
使用双负片:
也就是说,不是空白(大写的S补码),也不是回车,也不是换行。分配外部非(
即
,补充
不必相信我的话:
输出: " " => match "\f" => match "\t" => match "\r" => no match "\n" => no match 注意排除垂直标签,但这是 addressed in v5.18 . 在过于严厉地反对之前,Perl文档使用相同的技术。中的脚注 âWhitespaceâ section of perlrecharclass 读数
这个 same section of perlrecharclass 同时也提出了其他不会冒犯语言教师反对双重否定的方法。
外部区域设置和Unicode规则,或者当
如果文本是Unicode,请使用与下面的子代码类似的代码从中的表构造模式。 the aforementioned documentation section .
其他应用
双重否定技巧对于匹配字母字符也很方便。记住
但是双重否定字符类可以尊重区域设置:
用这种方式表达单词字符而不是数字或下划线有点不透明。posix字符类更直接地传达意图。
或使用Unicode属性作为 szbalint 建议
|
3
42
一个变异 Gregâs answer 包括回车:
这个regex比
|
4
11
你要找的是POSIX
在Java中(不要忘记启用)
与同类产品相比
但问题是,即使坚持使用Unicode也不能100%解决这个问题。考虑以下字符,这些字符在Unicode中不被视为空格:
前面提到的蒙古语元音分隔符不包括在内,这可能是一个很好的原因。它与200c和200d一起出现在words(afaik)中,因此打破了所有其他空白区都遵守的基本规则:您可以用它标记化。它们更像修饰符。然而,
在Java中:
|
5
8
|
6
-3
|
lonix · 使用sed从JSON中提取非贪婪正则表达式 1 年前 |
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
Katia · 根据特定规则进行多行匹配 2 年前 |
MHA · Pandas str.extract()以字母结尾的数字 2 年前 |
Slava Vir · 如何查找后面“/”之间的最后一组 2 年前 |