很抱歉提出这些菜鸟问题,但我对正则表达式不是很感兴趣。我有几个这样的句子:
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]*
由于单词边界寻找单词字符(\w
或 [a-zA-Z0-9_]
)与非单词相邻的位置字符(\W
或 [^a-zA-Z0-9_]
),这意味着示例字符串 _foo
不匹配(介于_
和 f
不是单词边界)。如果您需要这种情况,请使用 lookbehind 添加辅助零长度断言:
(?:\b|(?<=_))[a-z][a-z0-9]*
关于java - 正则表达式匹配所有不以数字开头的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26350856/