Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';“t”表示;[^\\w]+&引用;是否生成与第一个字符相同的连续字符符字符串?_Java_Regex - Fatal编程技术网

Java 为什么';“t”表示;[^\\w]+&引用;是否生成与第一个字符相同的连续字符符字符串?

Java 为什么';“t”表示;[^\\w]+&引用;是否生成与第一个字符相同的连续字符符字符串?,java,regex,Java,Regex,示例字符串:“ttttar”、“bbbb abbb”、“cccacc bbb” 我想使用表达式[^\\w]分别提取“tttt”、“bbbb”和“ccc”+ 我确信^\\w会生成每个字符串的第一个字符。因此,对于第一个字符串,结果表达式不应该是[t]+,因此计算为“tttt”模式(等于\W+)匹配字符串中任何位置的一个或多个字符,而不是单词字符。之所以会出现这种情况,是因为[^…]是一个与类中指定的字符以外的任何字符都匹配的字符 你可以用 ^(\w)\1* 见 详细信息 ^-字符串的开头 (\

示例字符串:“ttttar”、“bbbb abbb”、“cccacc bbb”

我想使用表达式[^\\w]分别提取“tttt”、“bbbb”和“ccc”+

我确信^\\w会生成每个字符串的第一个字符。因此,对于第一个字符串,结果表达式不应该是[t]+,因此计算为“tttt”

模式(等于
\W+
)匹配字符串中任何位置的一个或多个字符,而不是单词字符。之所以会出现这种情况,是因为
[^…]
是一个与类中指定的字符以外的任何字符都匹配的字符

你可以用

^(\w)\1*

详细信息

  • ^
    -字符串的开头
  • (\w)
    -第1组:任何单词字符
  • \1*
    -0多次出现在组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*