1

テキストの文字列があり、その中には常にハッシュと数字(そして時には句読点)であるいくつかのインスタンスがあります。

テキスト#12321、テキスト#456テキスト#789 ; テキスト#0 ! 等。

ハッシュに続く数値(可変長)ごとに preg_match_all する正規表現が必要ですが、数値ではないものの前にあるため、上記の例では次の配列を取得します。

' 12321 ' ' 456 ' ' 789 ' ' 0 '

私は試した:

'/[#](.*?)[^0-9]/'

'/(\\d+)(.*?)(\\d+)/'

しかし、最初の例は奇妙な方法で失敗し、2 番目の例は他のすべてのインスタンスにのみ一致します。

私はドキュメンテーションを通して自分のやり方を困惑させようとしていますが、これを行う最善の方法を理解するのに非常に役立ちます. 誰かが混乱の時間を節約し、これの正しい正規表現構文を教えてもらえますか?

4

2 に答える 2

5

この正規表現を使用します: -

'/#(\d+)/'

最後に確認する必要はありませんnon-number\d+とにかく数字だけを取得し、数字以外に遭遇するとすぐに停止します。

#は正規表現のメタ文字ではないため、文字クラスで囲む必要はありません。

于 2013-01-22T16:37:20.310 に答える
0

リストされた最初の試み:

'/[#](.*?)[^0-9]/'

次の一致の始まりである可能性がある余分な文字を消費するためだけに失敗するようです (「#123#456」のような文字列がある場合)。それはかなり近いですが、これは:

'/#([0-9]+)/'

うまくいくはずです、私は信じています。

于 2013-01-22T16:39:01.490 に答える