Java 正则表达式匹配所有不以数字开头的单词

Java 正则表达式匹配所有不以数字开头的单词,java,regex,java.util.scanner,Java,Regex,Java.util.scanner,很抱歉,我提出了一些不切实际的问题,但我对regex不是很感兴趣。我有几句话是这样的: text1.2文本:text3,,text4.5。text6==t7@text8。T、 9-T10,我想使用扫描仪返回: a单个字符,b个包含字符和数字但以字符开头的单词。其他任何内容都可以被视为分隔符 因此,在上面的句子中,这些应该被返回: text1 text3 text4 text6 t7 text8 T T10 我可以在扫描器中使用多个分隔符,比如\.\\\:\\\,\\\\,等等,但它可以是我想要

很抱歉,我提出了一些不切实际的问题,但我对regex不是很感兴趣。我有几句话是这样的:

text1.2文本:text3,,text4.5。text6==t7@text8。T、 9-T10,我想使用扫描仪返回:

a单个字符,b个包含字符和数字但以字符开头的单词。其他任何内容都可以被视为分隔符

因此,在上面的句子中,这些应该被返回:

text1
text3
text4
text6
t7
text8
T
T10
我可以在扫描器中使用多个分隔符,比如\.\\\:\\\,\\\\,等等,但它可以是我想要提取的单词之间的任何东西,而且我不这样做。无论如何,这是一个非常好的方法

是否有一个正则表达式可以用作分隔符,或者可以在scanner.hasNextregex中提取这些单词

提前感谢

使用:

由于单词边界查找一个单词字符\w或[a-zA-Z0-9_uu]与非单词字符\w或[^a-zA-Z0-9_u]相邻的位置,这意味着示例字符串foo在u和f之间不匹配。如果需要这种情况,请使用lookback添加辅助零长度断言:

(?:\b|(?<=_))[a-z][a-z0-9]*
使用:

由于单词边界查找一个单词字符\w或[a-zA-Z0-9_uu]与非单词字符\w或[^a-zA-Z0-9_u]相邻的位置,这意味着示例字符串foo在u和f之间不匹配。如果需要这种情况,请使用lookback添加辅助零长度断言:

(?:\b|(?<=_))[a-z][a-z0-9]*

我不确定这是否是你的意思,但似乎你想用这些部分作为分隔符:

text1.2text:  text3,,text4 5. text6=== t7@ text8. T, 9-- T10
     ^^^^^^^^^     ^^     ^^^^     ^^^^  ^^     ^^ ^^^^^^
这意味着您要在每一个非字母数字字符和后面以数字开头的可选单词上拆分此字符串。如果是这种情况,您可以将扫描仪设置为使用分隔符,如

"([^\\w]+(\\d\\w*)*)+"
[^\\w]+一个或多个非字母数字字符 \\d\\w**后面可以跟零个或多个以数字开头的字 [^\\w]+\\d\\w**+分隔符可以重复多次,这样可以避免在分隔符之间返回空字符串 然后简单地迭代下一个元素

演示:

输出:

text1
text3
text4
text6
t7
text8
T
T10

我不确定这是否是你的意思,但似乎你想用这些部分作为分隔符:

text1.2text:  text3,,text4 5. text6=== t7@ text8. T, 9-- T10
     ^^^^^^^^^     ^^     ^^^^     ^^^^  ^^     ^^ ^^^^^^
这意味着您要在每一个非字母数字字符和后面以数字开头的可选单词上拆分此字符串。如果是这种情况,您可以将扫描仪设置为使用分隔符,如

"([^\\w]+(\\d\\w*)*)+"
[^\\w]+一个或多个非字母数字字符 \\d\\w**后面可以跟零个或多个以数字开头的字 [^\\w]+\\d\\w**+分隔符可以重复多次,这样可以避免在分隔符之间返回空字符串 然后简单地迭代下一个元素

演示:

输出:

text1
text3
text4
text6
t7
text8
T
T10

如果需要匹配整个字符串,请尝试以下操作:

/^(\b[a-z][a-z0-9]*)$/ig
测试:

tag1//匹配 标记tag2//不匹配 1标记//不匹配 @标记//不匹配 标记@//不匹配 大写标记//匹配
如果需要匹配整个字符串,请尝试以下操作:

/^(\b[a-z][a-z0-9]*)$/ig
测试:

tag1//匹配 标记tag2//不匹配 1标记//不匹配 @标记//不匹配 标记@//不匹配 大写标记//匹配
像这样的东西?像这样的东西。非常感谢。只有一个问题。最后一个+用于覆盖例如单词之间的2个空格。正当如果是这种情况,我不能也使用[^\\w]+\\d\\w**[^\\w]+吗?@GeeKat88+用于像..2foo::3bar这样的分隔符。如您所见,此字符串包含两个连续分隔符:…2foo和::3bar。如果不使用+next,则将在这些分隔符之间返回空字符串。如果我们使用[^\\w]+\\d\\w**[^\\w]+并且分隔符看起来像::1aa::2bb,那么2bb将不包括在此分隔符中,因此它将作为有效单词返回,而根据您的问题判断,它不应该是正确的。非常感谢。只有一个问题。最后一个+用于覆盖例如单词之间的2个空格。正当如果是这种情况,我不能也使用[^\\w]+\\d\\w**[^\\w]+吗?@GeeKat88+用于像..2foo::3bar这样的分隔符。如您所见,此字符串包含两个连续分隔符:…2foo和::3bar。如果不使用+next,则将在这些分隔符之间返回空字符串。如果我们使用[^\\w]+\\d\\w**[^\\w]+并且分隔符看起来像::1aa::2bb,那么2bb将不包含在此分隔符中,因此它将作为有效单词返回,而根据您的问题判断它不应该包含。