1

を使用してPHPで文字列を検索し、preg_match()「xdr」の形式の文字列を返そうとしています。ここで、xは1桁の数字です。

それ以外の場合、文字列は文字、数字、「。」で構成されます。終止符とスペース。

私は正規表現で絶望的です、誰かが私を助けることができますか?

試しまし^([a-zA-Z0-9]+)\s2dr$たが、うまくいきません

たとえば、文字列は次のようになります。A really big 2.0 was 3dr once

4

2 に答える 2

2

私があなたのニーズを理解している限り、この正規表現は、いくつかの数字の後にdr:が続く文字列と一致するように機能します。

 /\b\d+dr\b/

で動作中preg_match

preg_match('/\b\d+dr\b/', $string);

説明:

/      : regex delim
  \b   : word boundary
  \d+  : one or more digit
  dr   : literaly dr
  \b   : word boundary
/      : regex delim

characters, numbers, '.' full stops and spaces他のキャラクターだけを使用したい場合は、次のようにします。

preg_match('/^[\w\d. ]*\b\d+dr\b[\w\d. ]*$/', $string);

そして、Unicode互換であるために:

preg_match('/^[\pL\pN. ]*\b\pN+dr\b[\pL\pN. ]*$/', $string);
于 2012-05-23T17:36:38.587 に答える
0

あなたは近くにいます。

次の正規表現は、1桁の数字に一致し、その後に1つ以上の英字、数字、ピリオド、スペースが続き、で終わりdrます。

^\d[a-zA-Z0-9. ]+dr$

:リテラルが必要かどうかわからない場合drは、最後から削除してください。

于 2012-05-23T15:45:21.330 に答える