2024-04-23 16:36:54 发布
网友
是否有一种简单的方法来匹配一个类中除某一组字符外的所有字符?例如,如果在一种可以使用\w匹配所有unicode单词字符集的语言中,是否有方法仅从该匹配中排除下划线“\u1”之类的字符
我唯一想到的想法是在每个角色周围使用消极的前/后看,但当我实际上只想将角色与积极匹配和消极匹配进行匹配时,这似乎比必要的更复杂。例如if&;是一个接线员,我可以做这个
^(\w&[^_])+$
您可以使用\w类的否定(->;\W)并排除它:
\w
\W
^([^\W_]+)$
就我理解你的问题而言,消极前瞻是正确的方式:
^((?!_)\w)+$
这真的取决于你的正则表达式的味道
。。。仅提供一个简单的字符类集操作:subtraction。这对于您的示例来说已经足够了,因此您可以简单地使用
[\w-[_]]
如果一个-后面跟一个嵌套字符类,则会减去它。就这么简单
-
。。。提供更丰富的character class set operations集合。特别是,您可以得到两个集的交集,如[[abc]&&[cde]](在本例中,这将给出c)。求交和求反结合在一起可以得到减法:
[[abc]&&[cde]]
c
[\w&&[^_]]
。。。支持将extended character classes上的set操作作为实验特性(从Perl5.18开始提供)。特别是,可以直接减去任意字符类:
(?[ \w - [_] ])
。。。(支持lookaheads)允许您通过使用负前瞻模拟减法:
(?!_)\w
这首先检查下一个字符是否不是_,然后匹配任何\w(由于负前瞻性,不能是_)
_
请注意,这些方法都是完全通用的,因为您可以减去两个任意复杂的字符类
您可以使用
\w
类的否定(->;\W
)并排除它:就我理解你的问题而言,消极前瞻是正确的方式:
这真的取决于你的正则表达式的味道
.NET
。。。仅提供一个简单的字符类集操作:subtraction。这对于您的示例来说已经足够了,因此您可以简单地使用
如果一个
-
后面跟一个嵌套字符类,则会减去它。就这么简单爪哇
。。。提供更丰富的character class set operations集合。特别是,您可以得到两个集的交集,如
[[abc]&&[cde]]
(在本例中,这将给出c
)。求交和求反结合在一起可以得到减法:Perl
。。。支持将extended character classes上的set操作作为实验特性(从Perl5.18开始提供)。特别是,可以直接减去任意字符类:
所有其他口味
。。。(支持lookaheads)允许您通过使用负前瞻模拟减法:
这首先检查下一个字符是否不是
_
,然后匹配任何\w
(由于负前瞻性,不能是_
)请注意,这些方法都是完全通用的,因为您可以减去两个任意复杂的字符类
相关问题 更多 >
编程相关推荐