|
|
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
|
|
|
Carsten · 使用最近的搜索模式更改文本块 1 年前 |
|
|
A.Ellett · 测试-t STDIN与-t<STDIN> 1 年前 |
|
|
con · 如何跳转到foreach迭代的特定点? 1 年前 |