Java 为什么';“t”表示;[^\\w]+&引用;是否生成与第一个字符相同的连续字符符字符串?
示例字符串:“ttttar”、“bbbb abbb”、“cccacc bbb” 我想使用表达式[^\\w]分别提取“tttt”、“bbbb”和“ccc”+ 我确信^\\w会生成每个字符串的第一个字符。因此,对于第一个字符串,结果表达式不应该是[t]+,因此计算为“tttt”模式(等于Java 为什么';“t”表示;[^\\w]+&引用;是否生成与第一个字符相同的连续字符符字符串?,java,regex,Java,Regex,示例字符串:“ttttar”、“bbbb abbb”、“cccacc bbb” 我想使用表达式[^\\w]分别提取“tttt”、“bbbb”和“ccc”+ 我确信^\\w会生成每个字符串的第一个字符。因此,对于第一个字符串,结果表达式不应该是[t]+,因此计算为“tttt”模式(等于\W+)匹配字符串中任何位置的一个或多个字符,而不是单词字符。之所以会出现这种情况,是因为[^…]是一个与类中指定的字符以外的任何字符都匹配的字符 你可以用 ^(\w)\1* 见 详细信息 ^-字符串的开头 (\
\W+
)匹配字符串中任何位置的一个或多个字符,而不是单词字符。之所以会出现这种情况,是因为[^…]
是一个与类中指定的字符以外的任何字符都匹配的字符
你可以用
^(\w)\1*
见
详细信息
-字符串的开头^
-第1组:任何单词字符(\w)
-0多次出现在组1中捕获的字符\1*
首先,您将
^
放错了位置。您已将其放在[]
中,这使其含义完全不同<代码>[^]表示反向字符类,因此它匹配字符类之外的任何内容。您应该将其放在[]
之外
另一件事是,您似乎希望连续匹配相同的字符,因为您不能只使用简单的字符类。你需要一份回信。不幸的是,正则表达式的工作方式与您描述的不同
^(\w)\1*
请注意,我将
\w
放入一个组中,具体地说,是组1。我只匹配过一次。然后,我匹配\1
,意思是“我的组1包含的内容”。您需要一个反向引用,^(\w)\1*
,或者在Java中,“^(\\w)\\1*”
。您好,谢谢!但是你能告诉我为什么我的思维方式不起作用吗。我到底出了什么问题?这让我很烦恼。@AungKhant(等于\W+
)模式匹配字符串中除单词字符以外的一个或多个字符。之所以会出现这种情况,是因为[^…]
是一个与类中指定的字符以外的任何字符都匹配的字符。啊,我知道^有一个不同的东西,但只是认为表达式^\\w inside是首先执行的。谢谢
ttttar: tttt
bbbb abbb: bbbb
cccacc bbb: ccc
^(\w)\1*