正则表达式:匹配任何带数字的单词

10
我已经在stackoverflow上查看过,但没有找到适用的解决方案。我需要一个正则表达式来匹配包含数字的任何单词(指两个完整空格之间的任何内容)。它可以是字母数字混合AB12354KFJKL,日期11/01/2014,带有连字符的数字123-489-568,或者仅仅是纯数字123456789 - 但它不能匹配不包含数字的任何单词。 谢谢。
以下是样本文本中所需内容的更好示例(粗体):
ABC1 ABC 23-4787 ABCD 4578 ABCD 11/01/2014 ABREKF
2个回答

22

一定还有更好的方法,不过我认为这个应该有效:

\S*\d+\S*

\S* - 零个或多个非空格字符

\d+ - 一个或多个数字

\S* - 零个或多个非空格字符


谢谢,但这个正则表达式的问题在于它选择了所有内容,包括空格和没有数字的单词,而我不想要这些。 - myeong
你需要特定的字符集吗?或者有哪些字符集是你不想要的? - Anderson Pimentel
现在试试:我已经从“.”更改为“\S”以仅捕获非空格字符。 - Anderson Pimentel

0
请使用这个前瞻符号:
(?=\D*\d)

这个断言表明字符串包含任意数量的非数字字符 (\D),后跟一个数字。

如果你想匹配/捕获字符串,只需将 .* 添加到正则表达式中:

(?=\D*\d).*

参考资料:http://www.rexegg.com/regex-lookarounds.html


我理解你的逻辑,但这是一个前瞻,没有任何东西可以捕获任何字符? - myeong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接