我需要匹配一个字符串(任何字符或空间以外的符号)长度为10和至少一个数字(但不确定的位置)在它。最简单的方法是什么?谢谢! (最好是在Perl的正则表达式,但任何真正的正则表达式将它线索。)我如何匹配一个固定长度的字符串和至少一个数字在它
符合要求的一些示例字符串:
ABCD1EFGH2
AGD-D.D8HD
1414151502
[TT]88daJh
有些样品不符合要求:
ABCDEFGHIJ # no digit
EGEGE_(**/ # no digit
asdgja8G # too short
@#21-GDKJGDE # too long
Thx!
更新:要清楚,这是一个搜索。输入字符串具有数千个字符。我需要找出所有10个字符中包含数字的“单词”。您可以考虑一个字符串,其中包含由空格和制表符分隔的所有8个以上单词。想要搜索只挑出前4个。谢谢!
UPDATE更新:道歉不再清楚(想简化案件,但未能排除其他解释)。这个正则表达式搜索的用法将是更长匹配的一部分。例如。一个10个字符的单词,至少有一个数字,后面跟着一个4个字符的单词等等。因此,第一步分割长字符串将不太合适。
'\ S * \ d \ S *'的作品,但会做很多回溯,这可能是OP的长字符串的问题。一个简单的选择是'[^ \ s \ d] * \ d \ S *' –
@Chris:我没有深入,因为我不想分散注意力的主要观点:如何准确地找到 - 十个字符的“单词”。如果我想添加这个优化,我会用[占有量词](http://www.regular-expressions.info/possessive.html) - '[^ \ s \ d] * + \ d \ S *'(仅用于Perl 5.10+) - 或[原子组](http://www.regular-expressions.info/atomic.html) - '(?> [^ \ s \ d] *)\ d \ S *' - 完全消除回溯。 –