我需要匹配一個字符串(任何字符或空間以外的符號)長度爲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 *' - 完全消除回溯。 –