这个问题适用于python 3正则表达式。我认为它也可能适用于其他语言。
这个问题很容易被误解,所以我在描述它时要小心。
作为背景,
\w
意思是“一个单词字符”。在某些情况下,python 3会将其视为
[a-zA-Z0-9_]
但是如果正则表达式是一个字符串,它将支持Unicode,因此
\w
意思是“任何Unicode单词字符”。这通常是一件好事,因为人们使用不同的语言,而且很难构建一个类似
[AZ-ZO-99]
同时适用于所有语言。我想
\w
因此在多语言设置中最有用。
但有一个问题:如果您不想匹配下划线,因为您认为它们实际上不是单词字符(对于您的特定应用程序而言),该怎么办?
如果您只关注英语应用程序,最好的解决方案可能是跳过
\w
完全且仅使用
[a-zA-Z0-9]
. 但是,如果您关注的是全局应用程序,并且不需要下划线,那么您可能遇到了非常不幸的情况。我还没写,但我想一次写一个代表100种语言的范围是非常困难的,这样你就可以避免下划线了。
所以我的问题是:有什么方法可以使用吗
\w
要匹配任何Unicode字字符,但不知何故也要从类中排除下划线(或其他一些不需要的字符)?我不认为我见过这样的描述,但它会非常有用。类似的东西
[\w^_]
.当然,这实际上不起作用,但我的意思是“使用一个字符类,它从表示的所有内容开始
\w
,然后继续从该类中删除下划线。”
思想?