【发布时间】:2013-03-02 21:34:13
【问题描述】:
IOW,\w 字符类的否定形式。我是否应该期望我使用正则表达式的不同语言会有不同的行为?
【问题讨论】:
-
IOW 是什么意思?我认为 \w 的否定形式是 \W..
标签: regex regex-negation
IOW,\w 字符类的否定形式。我是否应该期望我使用正则表达式的不同语言会有不同的行为?
【问题讨论】:
标签: regex regex-negation
当然\W 包括\r 和\n。
\W 是\w 的否定,\w 包含字母、数字和连接标点符号(如下划线)。
现在有 3 种可能性:
\w 是基于 ASCII 的 ==> [a-zA-Z0-9_]
\w 是基于 Unicode 的 ==> 类似 [\p{L}\p{Nd}\p{Pc}] 的意思是所有语言的字母、数字和一些类似于下划线 See Unicode on regular-expressions.info 的字符
风格允许您使用修饰符切换\w 的行为。
但由于\w 中从未包含换行符,因此它们在所有情况下都包含在\W 中
【讨论】:
[\W+\n+\r+],你需要将量词放在字符类后面,这样你就可以在类中添加+。比较[\W\n\r]+ 和\W+
\w 是[a-zA-Z0-9_] 的简写,因此它只会匹配 a-z(小写和大写)、数字和下划线。否定的 \w 是 \W 将匹配除 \w
阅读here更多。
基本上有 2 种正则表达式,POSIX 和 Perl。从理论上讲,posix 正则表达式应该独立于编程语言,但也有一些已知的例外。请参阅此线程了解 Java 和 .NET 之间的差异(理论上相同的 posix,实际上不一样) Are Java and C# regular expressions compatible?
【讨论】: