文字列(スペース以外の任意の文字または記号)を長さが10で、少なくとも数字(しかし不確かな場所)と一致させる必要があります。それ。それを行う最も簡単な方法は何ですか?どうも! (好ましくはPerlの正規表現ではなく、本当にすべての正規表現は、その上に光を当てるでしょう。)の要件を満たす固定長と少なくとも1桁の文字列を正規表現するには
いくつかのサンプル文字列:要件を満たしていない
ABCD1EFGH2
AGD-D.D8HD
1414151502
[TT]88daJh
いくつかのサンプル:
ABCDEFGHIJ # no digit
EGEGE_(**/ # no digit
asdgja8G # too short
@#21-GDKJGDE # too long
を
Thx!
更新:これは検索のためのものです。入力文字列には何千もの文字があります。私はそれらの中に数字がある10文字の "単語"をすべて一致させる必要があります。スペースやタブで区切られた上記の8つの単語すべてを含む文字列を考えることができます。最初の4つだけを選ぶ検索が欲しいですか?どうも!
更新の更新:もう一度明確ではないことをお詫び申し上げます(このケースを簡素化したいが、別の解釈を除外しなかった)。この正規表現検索の使用法は、より長い一致の一部になります。例えば。少なくとも数字がの10文字の単語と、それに続く4文字の単語など...長い文字列を最初のステップとして分割すると、うまくいきません。
'\は\ D \ S *'作品* Sけど行いますOPの長い文字列の問題かもしれません。簡単な選択肢は '[^ \ s \ d] * \ d \ S *' –
です@クリス:私は主な点から注意をそらしたくないので、 10文字の "単語"。しかし、もし私がその最適化を追加したいのであれば、[所有量限定子](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 * ' - バックトラックを完全に排除する。 –