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

标签 java regex java.util.scanner

很抱歉提出这些菜鸟问题,但我对正则表达式不是很感兴趣。我有几个这样的句子:

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

a) 单个字符,b) 包含字符和数字但确实以字符开头的单词。

其他的都可以看作分隔符。

所以在上面的句子中应该返回这些:

text1
text3
text4
text6
t7
text8
T
T10

我可以在扫描仪中使用多个分隔符,例如 "\\.|\\:|\\,|\\,," 等,但它可以是我想要提取的单词之间的任何内容另外,我不认为这是一个很好的方法。

有没有我可以用作分隔符的正则表达式,或者可以在 scanner.hasNext("regex") 中提取这些词?

提前致谢

最佳答案

使用 word boundary :

\b[a-z][a-z0-9]*

Demo


由于单词边界寻找单词字符(\w[a-zA-Z0-9_])与非单词相邻的位置字符(\W[^a-zA-Z0-9_]),这意味着示例字符串 _foo 不匹配(介于_f 不是单词边界)。如果您需要这种情况,请使用 lookbehind 添加辅助零长度断言:

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

Demo

关于java - 正则表达式匹配所有不以数字开头的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26350856/

相关文章:

java - 匿名扫描仪关闭

java - JAVA和PHP AES加密之间的区别

java - 如何从 Java 执行 PHP 脚本?

Java 格式毫秒转 uu :mm:ss

c++ - 正则表达式从 netsh wlan 获取 MAC 地址

Javascript 正则表达式非贪婪搜索引号

Java Swing,单击按钮,输出到 JTextArea

regex - 通过正则表达式从字符串中提取多个值

java - 标记包含空标记的字符串

java - 十六进制到十进制的读写?