我是正则表达式的新手,但我在过去的两天里进行了研究,并且我还在这个网站和其他网站中尝试了许多类似的查询。
我正在尝试想出一个表达式(POSIX ERE),它可以找到包含至少一个字母和至少一个数字的整个单词。具体来说,我想捕获所有这些:
B/DIN/37/1 DU/32.Abb.31 P/NA.17 O/DIN/2017/8 22/N.Abb.2
我尝试了很多方法,并在此过程中多次使我的软件崩溃,但仍然没有成功。我的问题之一是我不知道如何表达我的字符串,因此它会找到符合标准的整个单词,而不仅仅是单词中的字符串。
非常感谢任何可以帮助我的人!
最佳答案
我假设单词是用空格分隔的。在这种情况下,具有数字和字母的单词可以分为两个正则表达式:
- 0 个或多个非空白字符,后跟一个字母,后跟 0 个或多个非空白字符,后跟一个数字,后跟 0 个或多个非空白字符
- 同上,但数字和字母交换了。
非空白字符匹配确保捕获整个单词。
这些转化为以下正则表达式:
\S*[A-Za-z]\S*[0-9]\S*
\S*[0-9]\S*[A-Za-z]\S*
将它们组合起来会产生最终的表达式:
(\S*[A-Za-z]\S*[0-9]\S*|\S*[0-9]\S*[A-Za-z]\S* )
关于regex - 匹配至少包含一个字母和至少一个数字的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47318345/